Coordinated by: Department of Distributed and Dependable Systems
Study branch coordinator: Prof. Ing. Petr Tůma, Dr.
The study branch puts emphasis on system-oriented programming in one of three focus domains. The specialization System programming focuses on coding the basic layers of a computer system (middleware, operating system). In the specialization Dependable systems, the curriculum deals with systematic construction of systems with high reliability, such as embedded and real-time systems. The specialization High performance computing introduces techniques for software development on high performance computing systems (highly parallel systems, distributed systems, clouds). All focus domains pay attention to both the programming tools and methods and the associated architectural knowledge.
The graduate possesses robust programming skills in the given focus domain: System programming for modern operating systems and system-related technologies (middleware, virtual machines), Dependable systems for dealing with the systematic construction of systems with guaranteed reliability, and High performance computing for software development on modern parallel and distributed systems. The graduate has absorbed both the necessary theoretical foundations and the skills required for solving practical programming tasks. He can use modern programming languages and tools. He can adapt to the fast-moving technologies of today and use these technologies in team software projects. He can solve problems individually and systematically, and apply deep system knowledge in delivering outside-the-box solutions.
Code | Subject | Credits | Winter | Summer | |
NTIN090 | Introduction to Complexity and Computability | 5 | 2/1 C+Ex | — | |
NTIN066 | Data Structures I | 5 | 2/1 C+Ex | — | |
NMAI060 | Probabilistic Methods | 3 | 2/0 Ex | — | |
NPRG043 | Recommended Programming Practices | 6 | — | 2/2 C+Ex | |
NPRG059 | Advanced Programming Praxis | 2 | 0/1 C | — | |
NSWI126 | Advanced Tools for Software Development and Monitoring | 3 | — | 0/2 C | |
NSWI150 | Virtualization and Cloud Computing | 3 | 2/0 Ex | — | |
NPRG027 | Credit for Project | 6 | 0/4 C | 0/4 C | |
NPRG023 | Software Project | 9 | 0/6 C | 0/6 C | |
NSZZ023 | Diploma Thesis I | 6 | 0/4 C | 0/4 C | |
NSZZ024 | Diploma Thesis II | 9 | 0/6 C | 0/6 C | |
NSZZ025 | Diploma Thesis III | 15 | 0/10 C | 0/10 C |
The student needs to obtain at least 30 credits for the courses from the following set:
Code | Subject | Credits | Winter | Summer | |
NPRG014 | Concepts of Modern Programming Languages | 3 | 0/3 C | — | |
NPRG042 | Programming in Parallel Environment | 6 | — | 2/2 C+Ex | |
NPRG054 | High Performance Software Development | 5 | — | 2/2 C+Ex | |
NPRG056 | Developing Applications for Mobile Devices | 3 | 0/2 C | — | |
NSWE001 | Embedded and Real Time Systems | 6 | — | 2/2 C+Ex | |
NSWI029 | Modern Trends in Computer Science | 2 | 0/2 C | 0/2 C | |
NSWI035 | Principles of Distributed Systems | 3 | 2/0 Ex | — | |
NSWI041 | Introduction to Software Engineering | 5 | — | 2/2 C+Ex | |
NSWI054 | Software Engineering for Dependable Systems | 3 | — | 0/2 MC | |
NSWI068 | Object and Component Systems | 5 | 2/2 C+Ex | — | |
NSWI080 | Middleware | 5 | — | 2/1 C+Ex | |
NSWI101 | System Behaviour Models and Verification | 6 | 2/2 C+Ex | — | |
NSWI109 | Compiler Design | 4 | — | 2/1 C+Ex | |
NSWI131 | Performance Evaluation of Computer Systems | 5 | — | 2/1 C+Ex | |
NSWI132 | Program Analysis and Code Verification | 6 | — | 2/2 C+Ex | |
NSWI161 | Advanced Operating Systems | 2 | — | 0/2 C | |
NSWI164 | Model-driven Development | 1 | 0/1 C | — |
In addition to the two examination areas that are obligatory for all study branches, the student will get three questions from the following areas based on the chosen specialization. In total, each student will get five questions.
1. System aspects of computers (SP)
Parallelism, synchronization and communication. Memory hierarchy. Virtualization support. All topics considered in the context of contemporary parallel architectures.
Code | Subject | Credits | Winter | Summer | |
NPRG042 | Programming in Parallel Environment | 6 | — | 2/2 C+Ex | |
NPRG054 | High Performance Software Development | 5 | — | 2/2 C+Ex | |
NSWI161 | Advanced Operating Systems | 2 | — | 0/2 C |
2. Parallel and distributed systems (SP)
Communication and coordination in distributed environment, algorithms and technologies (specific technologies for RPC, DSM, messaging based on current development).
Code | Subject | Credits | Winter | Summer | |
NSWI035 | Principles of Distributed Systems | 3 | 2/0 Ex | — | |
NSWI080 | Middleware | 5 | — | 2/1 C+Ex |
3. Modern programming concepts (SP)
Modern object-oriented concepts, metaprogramming, reflection, aspects. Features of modern programming languages (for example annotations, iterators, generics, lambda functions). Code quality metrics, documentation, refactoring, testing and debugging. Design patterns. All topics considered in the context of contemporary programming languages.
Code | Subject | Credits | Winter | Summer | |
NPRG043 | Recommended Programming Practices | 6 | — | 2/2 C+Ex | |
NPRG014 | Concepts of Modern Programming Languages | 3 | 0/3 C | — |
1. System aspects of computers (DS)
Real-time and embedded systems (RTES), real-time scheduling, design and modeling of RTES, operating systems for RTES. Mobile devices, design and deployment of mobile applications, resource management.
Code | Subject | Credits | Winter | Summer | |
NSWE001 | Embedded and Real Time Systems | 6 | — | 2/2 C+Ex | |
NPRG056 | Developing Applications for Mobile Devices | 3 | 0/2 C | — |
2. Parallel and distributed systems (DS)
Synchronization in concurrent systems. Causality and consensus in distributed environments. Communication, coordination, replication and mobility in distributed environment, algorithms and technologies (specific technologies for RPC, DSM, messaging based on current development).
Code | Subject | Credits | Winter | Summer | |
NSWI035 | Principles of Distributed Systems | 3 | 2/0 Ex | — | |
NSWI080 | Middleware | 5 | — | 2/1 C+Ex |
3. Formal methods (DS)
Program behavior modeling, formal tools (timed automata, LTS, Kripke Structure, lattice, LTL, CTL, bisimulation). Contracts and code verification. Static analysis (principles, basic algorithms). Model checking, state explosion, infinite state model checking, compositional reasoning, bounded model checking, CEGAR, symbolic execution, runtime verification, abstract interpretation).
Code | Subject | Credits | Winter | Summer | |
NSWI101 | System Behaviour Models and Verification | 6 | 2/2 C+Ex | — | |
NSWI132 | Program Analysis and Code Verification | 6 | — | 2/2 C+Ex |
1. Distributed systems (HPC)
Causality and consensus in distributed environment. Communication, coordination, replication and mobility in distributed environment, algorithms and technologies (specific technologies for RPC, DSM, messaging based on current development).
Code | Subject | Credits | Winter | Summer | |
NSWI035 | Principles of Distributed Systems | 3 | 2/0 Ex | — | |
NSWI080 | Middleware | 5 | — | 2/1 C+Ex |
2. Parallel programming (HPC)
Modern memory architectures (multiprocessor, GPU, NUMA), relationship between data location and access efficiency. Converting computations for data parallelism, parallel solutions of non-homogeneous tasks. Efficient parallel implementation of basic algorithms. Synchronization, load balancing.
Code | Subject | Credits | Winter | Summer | |
NPRG042 | Programming in Parallel Environment | 6 | — | 2/2 C+Ex | |
NPRG054 | High Performance Software Development | 5 | — | 2/2 C+Ex |
3. System aspects of computers (HPC)
Memory hierarchy. Virtualization support. Performance metrics and relevant measurement methods. Performance measurement methodologies. Performance modeling. All topics considered in the context of contemporary parallel architectures.
Code | Subject | Credits | Winter | Summer | |
NSWI131 | Performance Evaluation of Computer Systems | 5 | — | 2/1 C+Ex | |
NSWI150 | Virtualization and Cloud Computing | 3 | 2/0 Ex | — |