Objectives and Outcomes

Students are able to think abstractly and acquire a basic knowledge in the field of classical and modern
combinatorics. Students have the knowledge of counting, they know the elements of combinatorial constructions,
combinatorial algorithms and elements of discrete optimisation. The acquired knowledge is used for
further education and scientific research.


The basic combinatorial objects. Permutations, combinations, partitions, compositions. Advanced
combinatorial structures. Finite geometries, block constructions. Latin squares. Codes. Hadamard matrix.
Algorithms for generating combinatorial objects. Combinatorics of enumerating objects. Recurrence
relations. Generating functions. Polya theorem. Combinatorics on words, combinatorial algorithms. Ways
of sorting and searching. Discrete optimisation. Linear and integer programming. Dynamic programming.
Packaging and coverage. Network optimisation. Theory of matroids and greedy algorithms. Coloring and
layout. Advanced heuristics. Random data structures and randomised algorithms.

Research work

Part of the course is conducted through independent research work that includes the application of
combinatorics to computer science, computer engineering, physics, chemistry, biology, as well as
available software tools for combinatorics.