Degree Plans - General Computer Science

Coordinating Department: Computer Science Institute and Department of Applied Mathematics Specialization Coordinator: doc. Mgr. Robert Šámal, Ph.D.

The specialization General Computer Science is suitable mainly for students interested in obtaining a solid foundation in computer science and mathematics, and who aim to follow their bachelor studies with a master's programme of study. Students are also well prepared for the job market, too. Taking General Computer Science allows the student to pursue algorithms, optimization, and their guiding principles, and also discrete mathematics.

Common obligatory courses in Computer Science

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

2.1 Obligatory Courses

CodeSubjectCreditsWinterSummer
NPRX005Non-procedural Programming 52/2 C+Ex
NOPX048Linear programming and combinatorial optimization 52/2 C+Ex
NMAX055Mathematical Analysis 2152/2 C+Ex

1 In 2019/20 the course Mathematical Analysis 2 is taught in the summer semester for students who started their studies in previous years. Students studying according to the current degree plan will take this course in the winter semester of 2020/21.

2.2 Elective Courses

Elective courses – group 1

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

CodeSubjectCreditsWinterSummer
NDMI084Introduction to approximation and randomized algorithms 52/1 C+Ex
NDMI098Algorithmic Game Theory 52/2 C+Ex
NDMI010Graph Algorithms 32/0 Ex
NDMX012Combinatorics and Graph Theory 2 52/2 C+Ex
NDMX009Introduction to Combinatorial and Computational Geometry 62/2 C+Ex
NOPX046Discrete and Continuous Optimization 52/2 C+Ex
NMAX062Algebra 1 52/2 C+Ex
NMAI063Algebra II 32/0 Ex
NMAX056Mathematical Analysis 3 52/2 C+Ex
NMAX042Numerical Mathematics 52/2 C+Ex
NMAI059Probability and Statistics 62/2 C+Ex
NAIL063Set Theory 32/0 Ex

Elective courses – group 2

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
NPRX041Programming in C++ 52/2 C+Ex
NPRX013Java 52/2 C+Ex
NPRX035C# Language and .NET Framework 52/2 C+Ex

Elective courses – group 3

A prerequisite for taking either part of the State Final Exam is to have obtained at least 45 credits from elective courses overall. There is no specific limit for this third group.

CodeSubjectCreditsWinterSummer
NPFL054Introduction to Machine Learning 52/2 C+Ex
NPGR035Machine learning in computer vision 52/2 C+Ex
NAIL120Introduction to Artificial Intelligence 52/2 C+Ex
NPGR003Introduction to Computer Graphics 52/2 C+Ex
NPGR002Digital Image Processing 43/0 Ex
NPGR038Introduction to computer game development 52/2 C+Ex
NPFL124Natural Language Processing 42/1 C+Ex
NPFL012Introduction to Computer Linguistics 32/0 Ex
NSWX004Operating Systems 42/1 MC
NPRX036Data Formats 52/2 C+Ex
NSWI090Computer Networks 32/0 Ex
NSWI143Computer Architecture 32/0 Ex
NDBI007Data Organisation and Processing I 42/1 C+Ex
NDBI040Modern Database Concepts 52/2 C+Ex
NSWI098Compiler Principles 62/2 C+Ex
NPRG042Programming in Parallel Environment 62/2 C+Ex
NSWX142Web Applications Programming 52/2 C+Ex
NPRG054High Performance Software Development 62/2 C+Ex
NPRX051Advanced C++ Programming 52/2 C+Ex
NPRX021Advanced Programming in Java 52/2 C+Ex
NPRX038Advanced C# Programming 52/2 C+Ex

2.3 Recommended Course of Study

The recommended course of study gives all the obligatory courses, while only some elective courses and optional courses are listed. Students need to choose other such courses themselves. Obligatory courses are printed in boldface, elective courses in roman, and optional courses in italics.

First year

Common to all specializations – see under general information above.

Second year

CodeSubjectCreditsWinterSummer
NTIX061Algorithms and Data Structures 2 52/2 C+Ex
NAIX062Propositional and Predicate Logic 52/2 C+Ex
NMAX055Mathematical Analysis 2152/2 C+Ex
NDMX011Combinatorics and Graph Theory 1152/2 C+Ex
NPRX...Programming in Java/C#/C++ 52/2 C+Ex
NTIX071Automata and Grammars 52/2 C+Ex
NPRX005Non-procedural Programming 52/2 C+Ex
NOPX048Linear programming and combinatorial optimization 52/2 C+Ex
NMAX059Probability and Statistics 52/2 C+Ex
NPRG045Individual Software Project 40/1 C
 Elective course – group 1 5 2/2 C+Ex
 Elective courses    
 Optional courses    

1 In 2019/20 the courses Mathematical Analysis 2 and Combinatorics and Graph Theory 1 are taught in the summer semester for students who started their studies in previous years. Students studying according to the current degree plan will take these courses in the winter semester of 2020/21.

Third year

CodeSubjectCreditsWinterSummer
NDBX025Database Systems 52/2 C+Ex
NSZZ031Bachelor Thesis 60/4 C
 Elective courses 30  
 Optional courses 15  

Recommended elective courses

To prepare for the State Final Exam, as well as for the further study of computer science, we suggest the following courses in particular.
CodeSubjectCreditsWinterSummer
NOPX046Discrete and Continuous Optimization 52/2 C+Ex
NDMI084Introduction to approximation and randomized algorithms 52/1 C+Ex
NDMI010Graph Algorithms 32/0 Ex
NDMX009Introduction to Combinatorial and Computational Geometry 62/2 C+Ex
NDMX012Combinatorics and Graph Theory 2 52/2 C+Ex
NAIL063Set Theory 32/0 Ex
NMAX062Algebra 1 52/2 C+Ex

2.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 General Computer Science specialization will be further tested according to the list below from topics 1.-3. and from two selected topics among 4.-7. The choice of these two topics is to be declared by the student when signing up for the State Final Exam.

1. Networking Fundamentals
Taxonomy of computer networks. ISO/OSI reference architecture. Overview of the TCP/IP protocol model. Routing. Addresses, ports, sockets. Client-server architectures. Fundamentals of HTTP, FTP and SMTP protocols.

2. Multivariable Differential and Integral Calculus
Riemann integral. Extreme values of multivariable functions. Metric spaces, open and closed sets. Compactness.

3. Combinatorics
Generating functions. Estimates of factorials and binomial coefficients. Ramsey theorems. Error-correcting codes.

4. Optimization Methods
Polyhedra, Minkowski–Weyl theorem. Basics of linear programming, duality theorems, algorithms for LP. Edmonds' algorithm. Integer programming. Approximation algorithms for combinatorial problems (satisfiability, independent set, set cover, scheduling). Applications of linear programming to approximation algorithms. The use of probability in the design of algorithms.

5. Advanced Algorithms and Data Structures
Random-access machine (RAM). Dynamic programming. Strongly connected components of directed graphs. Maximal flows: Dinic and Goldberg algorithms. Application of flows: disjoint paths, matching in bipartite graphs. Flows and paths in graphs with integer weights. Text search algorithms: Knuth–Morris–Pratt, Aho–Corasick, and Rabin–Karp algorithms. DFT and its applications. Approximation algorithms and schemes. Parallel algorithms in Boolean circuits and comparator networks.

6. Geometry
Basic theorems about convex sets (Helly, Rado, separation). Minkowski's lattice theorem. Convex polytopes (basic properties, V-polytopes, H-polytopes, combinatorial complexity). Geometric duality. Voronoi diagrams, hyperplane arrangements, point-line incidences. Elementary computational geometry algorithms (construction of a line arrangement in the plane, construction of a convex hull in the plane).

7. Advanced Discrete Mathematics
Graph colouring (Brooks' and Vizing's theorem). Tutte's theorem. Extremal combinatorics (Turán's theorem, Erdös–Ko–Rado theorem). Drawing graphs on surfaces. Sets and mappings. Subvalence and equivalence of sets. Well-ordered sets. Axiom of choice (Zermelo's theorem, Zorn's lemma).