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
NPRG005Non-procedural Programming 52/2 C+Ex
NOPT048Linear Programming and Combinatorial Optimization 52/2 C+Ex
NMAI055Mathematical Analysis 2 52/2 C+Ex

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
NDMI012Combinatorics and Graph Theory 2 52/2 C+Ex
NDMI110Graphs and networks 52/2 C+Ex
NDMI009Introduction to Combinatorial and Computational Geometry 52/2 C+Ex
NOPT046Discrete and Continuous Optimization 52/2 C+Ex
NMAI062Algebra 1 52/2 C+Ex
NMAI063Algebra 2 32/0 Ex
NMAI056Mathematical Analysis 3 52/2 C+Ex
NMAI042Numerical Mathematics 52/2 C+Ex
NMAI073Probability and Statistics 2 52/2 C+Ex
NAIL063Set Theory 32/0 Ex
NAIL124Exercises from Set Theory 30/2 C

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
NPRG041Programming in C++ 52/2 C+Ex
NPRG013Programming in Java Language 52/2 C+Ex
NPRG035Programming in C# Language 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
NPFL129Introduction to Machine Learning with Python 52/2 C+Ex
NPFL054Introduction to Machine Learning with R 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
NSWI004Operating Systems 42/1 MC
NPRG036Data Formats 52/2 C+Ex
NSWI090Computer Networks 32/0 Ex
NSWI143Computer Architecture 32/0 Ex
NDBI007Database Access Methods 42/1 C+Ex
NDBI040Modern Database Systems 52/2 C+Ex
NSWI098Compiler Principles 62/2 C+Ex
NPRG042Programming in Parallel Environment 62/2 C+Ex
NSWI142Web Applications Programming 52/2 C+Ex
NPRG054High Performance Software Development 62/2 C+Ex
NPRG051Advanced C++ Programming 52/2 C+Ex
NPRG021Advanced Java Programming 52/2 C+Ex
NPRG038Advanced 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
NTIN061Algorithms and Data Structures 2 52/2 C+Ex
NAIL062Propositional and Predicate Logic 52/2 C+Ex
NMAI055Mathematical Analysis 2 52/2 C+Ex
NDMI011Combinatorics and Graph Theory 1 52/2 C+Ex
 Programming in Java/C++/C# 52/2 C+Ex
NTIN071Automata and Grammars 52/2 C+Ex
NPRG005Non-procedural Programming 52/2 C+Ex
NOPT048Linear Programming and Combinatorial Optimization 52/2 C+Ex
NMAI059Probability and Statistics 1 52/2 C+Ex
NPRG045Individual Software Project 40/1 C
 Elective course – group 1 5 2/2 C+Ex
 Elective courses    
 Optional courses    

Third year

CodeSubjectCreditsWinterSummer
NDBI025Database 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
NOPT046Discrete and Continuous Optimization 52/2 C+Ex
NDMI084Introduction to Approximation and Randomized Algorithms 52/1 C+Ex
NDMI010Graph Algorithms 32/0 Ex
NDMI009Introduction to Combinatorial and Computational Geometry 52/2 C+Ex
NDMI012Combinatorics and Graph Theory 2 52/2 C+Ex
NAIL063Set Theory 32/0 Ex
NMAI062Algebra 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.

Relevant courses:

Introduction to Networking (NSWI141)

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

Relevant courses:

Combinatorics and Graph Theory 1 (NDMI011)
Combinatorics and Graph Theory 2 (NDMI012)

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

Relevant courses:

Mathematical Analysis 2 (NMAI055)

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.

Relevant courses:

Linear Programming and Combinatorial Optimization (NOPT048)
Discrete and Continuous Optimization (NOPT046)

5. Advanced Algorithms and Data Structures
Random-access machine (RAM). Dynamic programming. Strongly connected components of directed graphs. Maximal flows: algorithms, applications. Flows and paths in graphs with integer weights. Text search algorithms. DFT and its applications. Approximation algorithms and schemes. Parallel algorithms in Boolean circuits and comparator networks.

Relevant courses:

Algorithms and Data Structures 1 (NTIN060)
Algorithms and Data Structures 2 (NTIN061)
Graph Algorithms (NDMI010)

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).

Relevant courses:

Introduction to Combinatorial and Computational Geometry (NDMI009)

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).

Relevant courses:

Combinatorics and Graph Theory 2 (NDMI012)
Set Theory (NAIL063)