SubjectsSubjects(version: 879)
Course, academic year 2020/2021
Introduction to Algorithms - NPRG062
Title: Algoritmizace
Guaranteed by: Department of Software and Computer Science Education (32-KSVI)
Faculty: Faculty of Mathematics and Physics
Actual: from 2020
Semester: winter
E-Credits: 4
Hours per week, examination: winter s.:2/1 C+Ex [hours/week]
Capacity: unlimited
Min. number of students: unlimited
State of the course: taught
Language: Czech, English
Teaching methods: full-time
Additional information:
Guarantor: doc. RNDr. Tomáš Dvořák, CSc.
doc. RNDr. Pavel Töpfer, CSc.
Incompatibility : NMIN102, NMIN112, NTIN060
Annotation -
Last update: doc. RNDr. Pavel Töpfer, CSc. (30.10.2019)
An introductory course on fundamental algorithms, algorithmic complexity and data structures for first-year students of computer science and computer science education.
Course completion requirements -
Last update: doc. RNDr. Tomáš Dvořák, CSc. (23.09.2019)

The course is concluded with a credit and a final exam. Obtaining a credit is a necessary prerequisite for an enrollment for the final exam.

The credit is awarded upon successfully completing the following requirements:

  • active participation in tutorials
  • obtaining a required score from homework assignments submitted by the deadline specified by the instructor

Due to the nature of the requirements, a failed attempt cannot be repeated as is possible for exams. The instructor may specify conditions whereby a student can make up for missing homework assignments.

The final exam consists of a written and an oral part. The grade is based on results of both parts. Problems assigned in the written part correspond to the syllabus and the material covered in tutorials. Questions posed in the oral part explore the topics included in the syllabus to the extent that these topics are covered in lectures. A student has three chances to take the final exam.

Literature -
Last update: doc. RNDr. Tomáš Dvořák, CSc. (23.09.2019)

Thomas H. Cormen,‎ Charles E. Leiserson,‎ Ronald L. Rivest,‎ Clifford Stein, Introduction to Algorithms, 3rd ed., MIT Press, Cambridge, MA 2009

Syllabus -
Last update: doc. RNDr. Tomáš Dvořák, CSc. (23.09.2019)
Algorithms and their efficiency.

  • Algorithm - properties, correctness, efficiency comparison.
  • Time and space complexity, asymptotic complexity, Big O notation.
  • Worst case, best case and average case analysis.

Basic algorithms and techniques.

  • Divisibility - Euclid's algorithm, prime factorization.
  • Prime numbers - primality testing, the sieve of Eratosthenes.
  • Decomposing numbers into digits, numeral systems conversion.
  • Higher-precision arithmetic ("long numbers").
  • Horner's scheme, fast exponentiation.

Basic data structures.

  • Array searching - sequential, binary.
  • Abstract data types: stack, queue, priority queue, dictionary.
  • Hash tables - principle, resolving collisions.
  • Heap. Binary search tree, balancing principle.


  • Internal sorting - direct methods (SelectSort, InsertSort, BubbleSort).
  • HeapSort, QuickSort.
  • Lower bounds for sorting.
  • Sorting in linear time (CountingSort, BucketSort, RadixSort).
  • Note about external sorting.


  • Recursion - principle, examples, efficiency.
  • Binary tree - representation, searching, applications.
  • Representing arithmetic expressions through binary trees.
  • Infix, prefix and postfix notations - evaluation, conversion.
  • General trees - representation, traversal, applications.

State space search.

  • Backtracking.
  • Depth first search (DFS) and breadth first search (BFS) - principle, applications, implementation.
  • Improving performace through pruning and heuristics.
  • Game tree, minimax, alpha-beta pruning.

Basic graph algorithms.

  • Representation of graphs.
  • DFS, BFS and their applications.

General methods of algorithms design.

  • Speeding by precomputation.
  • Greedy algorithm.
  • Divide and conquer.
  • Memoization.
Charles University | Information system of Charles University |