Course detail

Algorithms (in English)

FIT-IALeAcad. year: 2024/2025

Overview of fundamental data structures and their exploitation. Principles of dynamic memory allocation. Specification of abstract data types (ADT). Specification and implementation of ADT's: lists, stack and its exploitation, queue, searching table. Algorithms upon the binary trees. Searching: sequential, in the ordered and in not ordered array, searching with the guard (sentinel), binary search, search tree, balanced trees (AVL). Searching in hash-tables. Sorting (ordering), principles, sorting without the moving of items, sorting with multiple keys. Most common methods of sorting: Select-sort, Bubble-sort, Heap-sort, Insert-sort a jeho varianty, Shell-sort, recursive and non-recursive notation of the Quick sort, Merge-sort, List-merge-sort, Radix-sort.

Language of instruction

English

Number of ECTS credits

5

Mode of study

Not applicable.

Offered to foreign students

Of all faculties

Entry knowledge

  • Basic knowledge of the programming in procedural programming language (knowledge of programming language C will be essential for solving homework problems).
  • Knowledge of secondary school level mathematics.

Rules for evaluation and completion of the course

  • Two evaluated  home assignments - 25 points
  • Mid-term written examination - 14 point
  • Final written examination - 51 points
  • Elaboration of short tasks in lectures - 10 points

Aims

To acquaint with the principles of methods of proving of correctness of programs and with basic concepts of construction of proved programms. To learn the fundamentals of algorithm coplexity. To learn the principles of dynamic memory allocation. To acquaint with basic abstract data types and to command its implementation and exploitation. To learn and command recursive and non recursive notation of basic algorithms. To overrule the implementation and analysis of most used algorithms for searching and sorting.
  • Student will acquaint with the methods of proving of correctness of programs and with construction of proved programms and learn their significance. 
  • Student will learn the fundamentals of algorithm coplexity and their intention. 
  • He/she acquaints with basic abstract data types and to commands its implementation and exploitation. 
  • Student will learn the principles of dynamic memory allocation. 
  • He/she learns and commands recursive and non recursive notation of basic algorithms. 
  • Student overrules the implementation and analysis of most used algorithms for searching and sorting.

  • Student learns terminology in Czech ane English language
  • Student learns to participate on the small project as a member of small team
  • Student learns to present and defend the results of the small project

Study aids

Not applicable.

Prerequisites and corequisites

Basic literature

Not applicable.

Recommended literature

Knuth, D.: The Art of Computer programming, Vol.1,2,3. Addison Wesley, 1968
Wirth, N.: Alorithms+Data Structures=Programs, Prentice Hall, 1976
Horowitz, Sahni: Fundamentals of Data Structures in C, University Press, 2010
Cormen, T.H., Leiserson, Ch.E., Rivest, R.L.: Introduction to Algorithms, Cambridge: MIT Press, 2009
Aho A.V., Hoppcroft J.E., Ullman J.D.: Data Structures and Algorithms, Addison Wesley, 1983.
Kruse, R.L.: Data Structures and Program Design. Prentice- Hall,Inc. 1984
Baase, S.: Computer Algorithms - Introduction to Design and Analysis. Addison Wesley, 1998

Classification of course in study plans

  • Programme IT-BC-1H Bachelor's

    specialization BCH , 0 year of study, summer semester, recommended course

Type of course unit

 

Lecture

39 hod., optionally

Teacher / Lecturer

Syllabus

  1. Overview of data structures, introduction to methods for evaluating the time complexity of algorithms.
  2. Abstract data type and its specification.
  3. Specification, implementation and exploitation of ADT list.
  4. Specification, implementation and exploitation of ADT stack, queue. Numeration of expressions with the use of stack.
  5. ADT search table.
  6. Binary tree, algorithms upon the binary tree.
  7. Searching, sequential, in the array, binary search.
  8. Binary search trees, AVL tree.
  9. Hashing-tables.
  10. Ordering (sorting), principles, without movement, multiple key.
  11. Most common methods of sorting of arrays.

Project

13 hod., compulsory

Teacher / Lecturer

Syllabus

  • Two home assignments