Course detail
Algorithms and Data Structures
FEKT-BPC-ALDAcad. year: 2023/2024
The first part of the course is focused on introducing students to the basic concepts: algorithm, time and memory complexity of the algorithm, data container / collection. The second part of the course deals with the concepts: abstract data type: (Vector, Stack, Queue, Set, Tree) and the use of iterators for these data types. In the third part, students will learn about recursive and non-recursive algorithms, sorting and searching algorithms.
Language of instruction
Number of ECTS credits
Mode of study
Guarantor
Entry knowledge
Rules for evaluation and completion of the course
Aims
Study aids
Prerequisites and corequisites
- compulsory prerequisite
Introduction to Programming
Basic literature
VEČERKA, Arnošt. Základní algoritmy. Skriptum Olomouc 2007. 91 s. (CS)
WRÓBLEWSKI,Piotr. Algoritmy – Datové struktury a programovací techniky. Brno: Computer Press, 2004. 351 s. ISBN 80-251-0343-9 (CS)
Recommended reading
Elearning
Classification of course in study plans
- Programme BPC-AMT Bachelor's 1 year of study, summer semester, compulsory
Type of course unit
Lecture
Teacher / Lecturer
Syllabus
2. Abstract data types, signature of abstract data type, concept (collection / container), concept of linear and nonlinear data structure (array, single linked list), description and properties of ADT: Stack, implementation of ADT Stack using array and single linked list.
3. Description and properties of ADT: Queue, Set, concept of iterator, use of iterators in ADT.
4. Description and properties of ADT: Set, Tree, unordered and ordered collections.
5. Introduction to sorting algorithms, properties of sorting methods, external and internal sorting, "in situ / in place" sorting. Algorithms Insert Sort, derivation of algorithm complexity.
6. Sorting by direct exchange (BubbleSort), modification of BubbleSort algorithm, derivation of algorithm complexity, sorting by direct selection (SelectSort), derivation of algorithm complexity.
7. Recursive and iterative algorithm, use of recursion to calculate Fibonacci sequence, Wildcard matching (wildcard symbols ?*). Variants of recursive algorithms: direct, indirect recursion (recursion with auxiliary function).
8. More efficient methods of internal sorting - Shell Sort, Quick Sort.
9. Trees - basic information, sorting using a heap.
10. External sorting with the same number of input and output files, deriving the complexity of the algorithm. External sorting using internal sorting, complexity derivation.
11. Search in linear data structure, Binary field search, algorithm complexity. Binary search trees, determining the complexity of the algorithm.
12. ADT Skip list. ADT Hash table - hashing, choice of hash function, collision. Collision resolution methods: chaining, open addressing and searching for a free position in the hash table. Expected complexity of hash table operations.
13. AVL trees, B-trees, end of the course.
Exercise in computer lab
Teacher / Lecturer
Syllabus
2. ADT: TStack_array, TStack_list.
3. ADT: TQueue_list.
4. ADT: Finalize TQueue_list, TQueue_array, iterator implementation.
5. Test #1 (ADT).
6. Algorithms: Insert Sort, Select Sort, Bubble Sort.
7. Algorithms: Bubble Sort (including optimization with auxiliary flag), Bubble Sort (with last change index calculation), Shaker Sort, TVector element struct (sorting of structure-type elements according to different keys).
8. Recursive algorithms: Factorial, Fibonacci sequence, wildcard matching.
9. Advanced sorting algorithms: Shell Sort, Quick Sort, Heap Sort, Merge Sort.
10. Algorithms: External sorting with equal number of input/output files.
11. Array search (ADT Set with binary search).
12. Hashing (ADT Set implemented by Hash map).
13. Test #2 (Algorithms).
Elearning