Home

Data structures and algorithms

• Class 30
• Practice 30
• Independent work 120
Total 180

Course title

Data structures and algorithms

Obligatory

23-11-507

2

6

Course overview

The aim of the module is to introduce students to the field of data structures and algorithms from two perspectives: the study of concepts (abstract data types) and how to apply them to solve everyday programming problems.
This is the central module within the study program and expands the knowledge, understanding and skills acquired by attending the Programming module in the first semester. By attending this module, students acquire the skills to solve more complex problem tasks in the field of programming. Acquired skills significantly contribute to the professional development of students in related professional fields.
The module is taught in the programming language C++. The final evaluation is based on solving a series of practical tasks in the C++ programming language using the selected software development tool.

Content

Students will learn:
• abstract data types such as lists, linked lists, stacks, queues, hash tables, dictionaries implemented by binary search trees and similar
• concrete implementation of data types in the STL library: array, vector, list, forward_list, stack, queue, heap, priority_queue, map, multimap, set, multiset, unordered_map, unordered_multimap, unordered_set, unordered_multiset
• algorithms related to data structures such as changes, searches, sorting and the like
• organize larger projects in the software development tool
• express and interpret algorithmic complexity.

Literature

1. Motik, B., Šribar, J. (2018) Demistificirani C++. 5th edn. Zagreb: Element.
2. O'Dwyer, A. (2017) Mastering the C++17 STL: Make full use of the standard library components in C++17. Birmingham: Packt Publishing.

Minimal learning outcomes

• Determine and justify the time complexity a priori and a posteriori for a given algorithm executed in a programming language.
• Create a solution using linear data structures (list, linked list, stack, queue) and related algorithms.
• Create a solution using hierarchical data structures (binary tree, heap, priority queue) and related algorithms.
• Create a solution using dictionaries derived from binary search trees and related algorithms.
• Describe sorting and searching algorithms and create a solution based on sorting and searching algorithms.
• Create a solution using addressing techniques and explain their time complexity.

Preferred learning outcomes

• Create more complex software solutions using projects with multiple files and user-defined data types.
• Create a more complex solution using linear data structures (list, linked list, stack, queue) and related algorithms.
• Create a more complex solution using hierarchical data structures (binary tree, heap, priority queue) and related algorithms.
• Create a more complex solution using dictionaries derived from binary search trees and related algorithms.
• Describe sorting and searching algorithms and create a more complex solution based on sorting and searching algorithms.
• Create a more complex solution using addressing techniques and explain their time complexity.