Degree Plans - Programming and Software Development

Coordinating Department: Department of Software Engineering Specialization Coordinator: RNDr. Filip Zavoral, Ph.D.

Common obligatory courses in Computer Science

Common obligatory courses for all specializations are listed above in the section giving general information.

3.1 Obligatory Courses

CodeSubjectCreditsWinterSummer
NSWX004Operating Systems 42/1 MC
NPRX041Programming v C++ 52/2 C+Ex
NSWX142Web Applications Programming 52/2 C+Ex
NSWI154Software Development Tools 20/2 C
NSWI041Introduction to Software Engineering 52/2 C+Ex
NPRX043Recommended Programming Practices 52/2 MC

3.2 Elective Courses

A prerequisite for taking either part of the State Final Exam is to have obtained at least 37 credits from elective courses overall.

Elective courses – group 1

A prerequisite for taking either part of the State Final Exam is to have obtained at least 5 credits from courses in this group.

CodeSubjectCreditsWinterSummer
NPRX013Programming in Java 52/2 C+Ex
NPRX035Programming in C# 52/2 C+Ex

Elective courses – group 2

A prerequisite for taking either part of the State Final Exam is to have obtained at least 10 credits from courses in this group.

CodeSubjectCreditsWinterSummer
NPRX051Advanced C++ Programming 52/2 C+Ex
NPRX021Advanced Programming in Java 52/2 C+Ex
NPRX038Advanced C# Programming 52/2 C+Ex
NSWX153Advanced Web Application Programming 52/2 C+Ex
NPRX056Mobile Devices Programming 30/2 C

Elective courses – group 3

A prerequisite for taking either part of the State Final Exam is to have obtained at least 10 credits from courses in this group.

CodeSubjectCreditsWinterSummer
NPRG024Design Patterns 30/2 MC
NSWI143Computer Architecture 32/0 Ex
NPRX036Data Formats 52/2 C+Ex
NSWI130Software System Architectures 52/2 C+Ex
NSWI090Computer Networks 32/0 Ex

Elective courses – group 4

A prerequisite for taking either part of the State Final Exam is to have obtained at least 6 credits from courses in this group.

CodeSubjectCreditsWinterSummer
NSWI098Compiler Principles 62/2 C+Ex
NPRG054High Performance Software Development 62/2 C+Ex
NPRG042Programming in Parallel Environment 62/2 C+Ex

Elective courses – group 5

CodeSubjectCreditsWinterSummer
NPGR038Introduction to computer game development 52/2 C+Ex
NPGR003Introduction to Computer Graphics 52/2 C+Ex
NDBX007Database Access Methods 42/1 C+Ex
NDBI040Modern Database Concepts 52/2 C+Ex
NSWI162Program semantics 10/1 C
NSWI163Introduction to Middleware 10/1 MC
NPFL054Introduction to Machine Learning 52/2 C+Ex
NAIL120Introduction to Artificial Intelligence 52/2 C+Ex
NPRX005Non-procedural Programming 52/2 C+Ex
NMAX055Mathematical Analysis 2 52/2 C+Ex

3.3 Recommended Course of Study

First year

Common to all specializations – see under general information above.

Second year

CodeSubjectCreditsWinterSummer
NPRX...Programming in Java/C++/C# 52/2 C+Ex
NDBX025Database Systems 52/2 C+Ex
NSWX142web Applications Programming 52/2 C+Ex
NTIX061Algorithms and Data Structures 2 52/2 C+Ex
NAIX062Propositional and Predicate Logic 52/2 C+Ex
NDMX011Combinatorics and Graph Theory 1 52/2 C+Ex
NPRX...Advanced Programming in Java/C++/C# 52/2 C+Ex
NTIX071Automata and Grammars 52/2 C+Ex
NMAX059Probability and Statistics 1 52/2 C+Ex
NPRG045Individual Software Project 40/1 C
 Elective courses    
 Additional courses    

Third year

CodeSubjectCreditsWinterSummer
NPRX...Programming in Java/C++/C# 52/2 C+Ex
 Advanced Programming in Java/C++/C# 52/2 C+Ex
NSWI098Compiler Principles662/2 C+Ex
NPRG054High Performance Software Development 62/2 C+Ex
NPRG042Programming in Parallel Environment 62/2 C+Ex
NSZZ031Bachelor Thesis 60/4 C
 Elective courses    
 Additional courses    

3.4 State Final Exam

The State Final Exam knowledge requirements common to all specializations are described in the first section of this chapter (General Information on Computer Science bachelor's degree plans). Students of the Programming and Software Development specialization will be further tested according to the list below.

1. Computer Architecture, Operating Systems and Networks
Runtime memory organization. Memory representation of arrays, structures, and classes. Cache, performance impact, NUMA. Virtual memory. Processing of instructions by processors. Processes and threads, context switching, IRQ, asynchronous I/O. Multicore, multisocket. Physical, link and transport layers. Internetworking, VLAN. TCP/IP adressing.

2. Programming Languages
Object lifetime. Components, dependency injection. Parallel programming, threads. Debugging, exceptions. Reflection and introspection. Principles of dynamic languages. Functional aspects of object languages. Static vs. dynamic polymorphism, generic programming, type deduction. Standard libraries. Design patterns. Principles of WWW, HTTP, URL. Static web pages. Principles of web applications. Client side programming. API of web applications.

3. Software Engineering
Software development processes, requirement analysis, testing, maintenance, risk analysis. Version control systems. Building. Performance measurement. Design of API, classes and methods, object design. Principles of web application security.

4. Databases
Architectures of database systems. Normal forms. Database schema, keys, indexes, integrity constraints. Transactions and their properties. SQL - common statements, subqueries. SQL procedures and functions, triggers.