General Information

The study programme Master of Computer Science consists of the following study branches and their specializations:

* Discrete Models and Algorithms
 Discrete mathematics and algorithms
 Geometry and mathematical structures of computer science
* Theoretical Computer Science
* Software and Data Engineering
 Software engineering
 Software development
 Web engineering
 Database systems
 Big data processing
* Software Systems
 System programming
 Dependable systems
 High performance computing
* Computational Linguistics
 Computational and formal linguistics
 Statistical methods and machine learning in computational linguistics
* Artificial Intelligence
 Intelligent agents
 Machine learning
* Computer Graphics and Game Development
 Computer graphics
 Computer game development

While your study branch has been specified already in your application, the choice of your specialization (when applicable) is up to your later decision (when enrolling for the state final exam).

Assumed knowledge

It is assumed that an incomming student has a suffucient knowledge of mathematics, theoretical computer science, and programming. In particular, students are expected to have a good knowledge of mathematics at the level of our bachelor courses NMAI054 Mathematical Analysis I, NMAI055 Mathematical Analysis II, NMAI059 Probability and Statistics, NMAI062 Algebra I, and NOPT048 Optimization Methods.

Students are also expected to have knowledge equivalent to the courses NDMI002 Discrete Mathematics, NTIN060 Algorithms and Data Structures I, NTIN061 Algorithms and Data Structures II, NTIN071 Automata and Grammars, and NAIL062 Propositional and Predicate Logic. Knowledge from these courses is also expected for the state final exam.

We also expect students to have good knowledge of programming at least at the level of our bachelor courses NPRG030 Programming I, NPRG031 Programming II.

Students missing knowledge in some of the above-mentioned areas are advised to consider taking the relevant bachelor courses in the first year of their Master's studies. Please do not hesitate to contact the programme coordinator in case of doubt.

Software Project

One of the obligatory courses for students of study branches ``Software and Data Engineering", ``Software Systems", and ``Computer Graphics and Game Development" is NPRG023 Software Project, a team software project. For students of study branches ``Computational Linguistics" and ``Artificial Intelligence" this course is elective and highly recommended. The goal of this course is to practice team work in large software projects lasting typically around 9 months. We strongly suggest that the topic of the project is chosen in accordance with the study branch. It is possible for students of different study branches to work together on a single project, each student contributing based on his/her study branch. The work on the project is finished by public presentation.

The course is coordinated by the Commission for Software Projects. After successful presentation of the project, each student will be granted 15 credits. 6 advance credits can be granted to a student by the teacher supervising the project already after the first semester of the project (provided that enough work has been done on the project). These 6 credits are part of the course NPRG027 Credit for Project. The remaining 9 credits will be granted to a student after successful defence of the project as part of the course NPRG023 Software Project. If the student does not request advance credits then credits for both courses will be granted after successful defence by enrolling to the courses together. The commission can grant 3 extra credits to best students as part of the course NPRG028 Extra Credit for Project.

Students can enroll in the courses NPRG023 Software Project and NPRG027 Credit for Project anytime, not just in the usual enrollment period of a given academic year. Nevertheless, each student can try to complete these courses at most twice during the studies.

State Final Exam

The state final exam consists of two parts: a defense of the Master's (diploma) thesis and an oral examination. The student can enroll for each part separately. To finish the studies, both parts of the state final exam must be completed successfully.

Requirements to enroll for the state final exam

obtaining at least 120 credits,
passing all obligatory courses of a given branch and specialization,
obtaining a given number of credits from the elective courses of a given branch and specialization,
submitting the Master's thesis by the specified deadline (for defence of the Master's thesis).

Master's (diploma) thesis

Students are advised to select the topic of their Master's (diploma) thesis at the end of the first semester. The faculty departments offer many topics for Master's theses each year and students may also suggest their own topics. We recommend selecting the topic of your thesis primarily from those offered by the department that coordinates your study branch. If you prefer a topic offered by another department or your own topic, please consult the coordinator of your study branch.

After the topic is assigned, the student enrolls in the following obligatory courses:

Code Subject Credits Winter Summer
NSZZ023 Diploma Thesis I   6 0/4 C
NSZZ024 Diploma Thesis II   9 0/6 C
NSZZ025 Diploma Thesis III   15 0/10 C

Course credits for these courses are granted by the thesis advisor on the basis of student's work on the thesis. We suggest the students to discuss with their advisor the expected amount of work and the milestones for each of these courses. All three courses can be enrolled in both winter and summer semesters.

Oral examination

The oral part of the state final exam has the same structure for all study branches. The student is examined from two obligatory areas covering the theoretical foundations of computer science (complexity, computability, and data structures) and from three areas specific to a given study branch and selected specialization. The student will select these three examination areas when registering for the final exam. Please note that some study branches have additional obligatory examination areas and some other restrictions might apply.

Note that not all the courses are available in English every year. We recommend students to contact the study branch coordinator for the selected study branch and discuss individual study plans prior the beginnning of each semester.


The obligatory examination areas:

1. Foundations of complexity and computability
Computational models (Turing machines, RAM). Decidable and partially decidable problems. Algorithmically undecidable problems (Halting Problem). Non-deterministic computational model. Basic complexity classes and their relationship. Hierarchy theorems. NP-complete problems, Cook-Levin Theorem. Pseudo-polynomial algorithms, strong NP-completeness. Approximation algorithms and schemes.

Recommended courses

Code Subject Credits Winter Summer
NTIN090 Introduction to Complexity and Computability   5 2/1 C+Ex

2. Data structures
Search trees ((a,b)-trees, Splay trees). Heaps (regular, binomial). Hashing, handling collisions, universal hashing, selecting a hash function. Analysis of worst-case, amortized-case and expected complexity of data structures. Behavior and analysis of data structures on systems with memory hierarchy.

Recommended courses

Code Subject Credits Winter Summer
NTIN066 Data Structures I   5 2/1 C+Ex

Charles University, Faculty of Mathematics and Physics
Ke Karlovu 3, 121 16 Praha 2, Czech Republic
VAT ID: CZ00216208

HR Award at Charles University

4EU+ Alliance