Software Systems
Coordinated by: Department of Distributed and Dependable Systems
Study branch coordinator: Prof. Ing. Petr Tůma, Dr.
Specializations:
- – System programming
- – Dependable systems
- – High performance computing
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.
5.1 Obligatory courses
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 |
5.2 Elective courses
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 | — |
5.3 State Final Exam
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.
Specialization: System programming
Examination areas
- 1. System aspects of computers (SP)
- 2. Parallel and distributed systems (SP)
- 3. Modern programming concepts (SP)
Knowledge requirements
1. System aspects of computers (SP)
Parallelism, synchronization and communication. Memory hierarchy. Virtualization support. All topics considered in the context of contemporary parallel architectures.
Recommended courses
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).
Recommended courses
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.
Recommended courses
Code | Subject | Credits | Winter | Summer | |
NPRG043 | Recommended Programming Practices | 6 | — | 2/2 C+Ex | |
NPRG014 | Concepts of Modern Programming Languages | 3 | 0/3 C | — |
Specialization: Dependable systems
Examination areas
- 1. System aspects of computers (DS)
- 2. Parallel and distributed systems (DS)
- 3. Formal methods (DS)
Knowledge requirements
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.
Recommended courses
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).
Recommended courses
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).
Recommended courses
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 |
Specialization: High performance computing
Examination areas
- 1. Distributed systems (HPC)
- 2. Parallel programming (HPC)
- 3. System aspects of computers (HPC)
Knowledge requirements
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).
Recommended courses
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.
Recommended courses
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.
Recommended courses
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 | — |