The scope of the entrance examination into the PhD study in computer science
Each candidate should have a broad knowledge on the level of Master's programs in computer science in the following topics:
- Cardinality of sets. Partially ordered sets, fixed points. Well-founded sets, proofs by induction.
- Homomorphisms and congruence relations. Defining classes of algebras by equations.
- Syntax and sematics of the propositional logic and the first-order predicate calculus. The notion of formal proof. The completeness theorem.
- Convergence of sequences and series of functions. Lebesgue integration and its relations to Riemann integral.
- Linear dependence relation. The rank of a linear transformation. Linear matrices and its relation to linear transformations.
- Floating point arithmetics: scope and error estimation. Example of an analysis of errors induced by rounding. Quadratures: rank, convergence. Linear equation systems: solvability, numerical methods, determinants, matrix reversibility. Conditioning.
- Formal grammars, automata and their classification. Decidable and undecidable decision problems. Classes of complexity, NP-completeness.
- Semantic correctness of algorithms. Pessimistic, average and amortized costs.
- Sorting and selection algorithms.
- Abstract data structures (dictionary, priority queue, stack), their implementations and applications.
- Formal sematics of programming languages. Floyd-Hoare method - proving correctness of programs.
- Imperative and declarative programming. Object-oriented programming.
- Lexical, syntactic and semantic analysis of programs. Code generation and optimization algorithms. Runtime environment.
- Synchronization and communication of processes in centralized and distributed systems. Examples of formalisms.
- Concurrent programming: correctness, examples of correctness violation, classical problems.
- Operating systems: tasks, typical implementation problems and solutions.
- Distributed systems: hardware and software aspects, methods of distributed communication, file systems, distributed shared memory, examples of distributed algorithms.

