5 Degree Plans – 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