# IC issues

## Theoretical foundations of computer science

Of the first three following courses, those who have combined math do not pass the exam.- Sets and relations (representations, functions, decompositions and equivalences)
- Elementary combinatorics (variations, combinations and permutations)
- Arrangements (arrangement relations, ordered sets and unions, numerical fields)
- Propositional logic (syntax, semantics, derivation system of propositional logic, proofs in propositional logic, truthfulness and provability of logical formulas, resolutions)
- First-order predicate logic (syntax, semantics, prenexation, scolemization, unification, resolution)
- Prolog (SLD-resolution, SLD-trees, computational mechanism of Prolog, basics of programming in Prolog)
- Proofs of programs (proving program properties, inductive methods, cycle invariants)
- Recursion (recursive definition of functions, higher order functions, partial application, curryification, definition of functions recursively and using combinators, definition of higher functions without the use of formal parameters)
- Evaluation of expressions (order of evaluation, strict and normal reduction, lazy reduction, efficiency of infinite data structure, definition of functions over infinite structures)
- Regular languages (regular languages, ways of their representation, properties of regular languages, relation between finite automata and regular grammars)
- Finite automata (definition, construction of a finite state machine, minimization of a finite state machine, conversion of a nondeterministic finite state machine to a deterministic state machine)
- Context-free languages (definitions, properties, ways of their representation, construction of context-free grammar and stack automaton, normal forms of context-free grammars, use of embedding lemma for context-free languages, closure properties of context-free languages)
- Stack automata (definition, conversion of context-free grammar to stack automata). Syntactic analysis (top-down and bottom-up parsing, word analysis).
- Data structures and their implementation (list, stack, queue, binary tree, general tree, search trees and their modifications. Implementation of binary and search trees and operations on them)
- Sorting (basic algorithms, heap sorting algorithms, merging, splitting)
- Graph algorithms (graph scrolling in depth and width, complexity of graph scrolling)

## Program, information and computer systems

- Computational systems I (number systems, relations between number systems, computer representation of numbers, principles of performing arithmetic operations. Boolean, Sheffer and Pierc algebra, combinational and sequential logic circuits.)
- Computer Systems II (Processors, their parameters and architectures. Intel architecture. Internal and external memories and principles of their function. Computer input and output devices and their connection)
- Programming (structured programming in imperative language, data and control structures of programming languages, data types, procedures and functions, block and modular program structure)
- Object-oriented programming (basic concepts of OOP, encapsulation, inheritance, polymorphism, object-oriented programming in imperative language, object collaboration. Event-driven programming. Exceptions)
- Operating systems (operating system architectures, operating system interfaces. Processes, process synchronization, deadlocks and deadlock protection methods. Working with memory, logical and physical address space, memory management and methods of its implementation.
- Planning in operating systems (management and planning of processor activity. File systems. Management and planning of I / O device activity)
- Computer networks (topologies, access methods and architectures of computer networks (Ethernet, Fast Ethernet, Token-ring, ATM,...). Wireless communication technologies. OSI model. TCP / IP protocol. Interconnection of computer networks and routing of information)
- Database I (relational model, relational schema, relational schema keys, integrity constraints, relational algebra, relation joining)
- Database II (functional dependencies; relational schema keys; Armstrong axioms; relational schema decomposition; normal forms in general, 1NF, 2NF, 3NF, Boyce-Codd NF, relations between NF; conversions of relational schemas to NF)
- SQL (command syntax and semantics; built-in functions, triggers, stored procedures, data definition statements; transaction processing; atomic operations; query optimization)
- Basics of data modeling (design of data structures; ER diagrams; entities, attributes, relationships; graphical representation)