First Semester
Complex problems are solved (elementwise processing, backtracking, updating and listing). The basic types in programming are introduced, the most frequently used programming methods are discussed (specification, creating correct programs by using the concept of weakest precondition, solving programs by using predefined programming theorems). Strategies for program creation are also described such as function and data abstraction, program and type transformation and state space transformation.
Second Semester
The methods introduced in the first semester are used to discuss well-known algorithms: string searching (Knuth-Morris-Pratt, Boyer-Moore, Quick-search, Rabin-Karp, Dömölky filter); data compressing (Huffman, arithmetic, graph, Ziv-Lempel methods); graph algorithms (optimal spanning tree, finding path with minimal cost, maximal strong components).