(1) Preliminaries (review of basic mathematical notions, data structures, induction, basic combinatorics).
(2) Elementary algorithmics (worst-case vs. average case, basic examples, elementary operations).
(3) Asymptotic Notation (big O, Omega and Theta).
(4) Analysis of Algorithms (loops, recurrence relations).
(5) Data structures (graphs, trees, heaps, disjoint sets).
(6) Searching and Sorting.
(7) Greedy algorithms.
(9) Dynamic programming.
(10) Text-search Algorithm.
(11) Introduction to the topics of computational complexity, heuristics, metaheuristics and approximation algorithms.