Degree Plans - General Computer Science
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
Code | Subject | Credits | Winter | Summer | |
NPRG005 | Non-procedural Programming | 5 | — | 2/2 C+Ex | |
NOPT048 | Linear Programming and Combinatorial Optimization | 5 | — | 2/2 C+Ex | |
NMAI055 | Mathematical Analysis 2 | 5 | 2/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.
Code | Subject | Credits | Winter | Summer | |
NDMI084 | Introduction to Approximation and Randomized Algorithms | 5 | 2/1 C+Ex | — | |
NDMI098 | Algorithmic Game Theory | 5 | 2/2 C+Ex | — | |
NDMI010 | Graph Algorithms | 3 | 2/0 Ex | — | |
NDMI012 | Combinatorics and Graph Theory 2 | 5 | — | 2/2 C+Ex | |
NDMI110 | Graphs and networks | 5 | — | 2/2 C+Ex | |
NDMI009 | Introduction to Combinatorial and Computational Geometry | 5 | 2/2 C+Ex | — | |
NOPT046 | Discrete and Continuous Optimization | 5 | — | 2/2 C+Ex | |
NMAI062 | Algebra 1 | 5 | 2/2 C+Ex | — | |
NMAI063 | Algebra 2 | 3 | — | 2/0 Ex | |
NMAI056 | Mathematical Analysis 3 | 5 | — | 2/2 C+Ex | |
NMAI042 | Numerical Mathematics | 5 | — | 2/2 C+Ex | |
NMAI073 | Probability and Statistics 2 | 5 | 2/2 C+Ex | — | |
NAIL063 | Set Theory | 3 | — | 2/0 Ex | |
NAIL124 | Exercises from Set Theory | 3 | — | 0/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.
Code | Subject | Credits | Winter | Summer | |
NPRG041 | Programming in C++ | 5 | 2/2 C+Ex | — | |
NPRG013 | Programming in Java Language | 5 | 2/2 C+Ex | — | |
NPRG035 | Programming in C# Language | 5 | 2/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.
Code | Subject | Credits | Winter | Summer | |
NPFL129 | Introduction to Machine Learning with Python | 5 | 2/2 C+Ex | — | |
NPFL054 | Introduction to Machine Learning with R | 5 | — | 2/2 C+Ex | |
NPGR035 | Machine Learning in Computer Vision | 5 | 2/2 C+Ex | — | |
NAIL120 | Introduction to Artificial Intelligence | 5 | — | 2/2 C+Ex | |
NPGR003 | Introduction to Computer Graphics | 5 | 2/2 C+Ex | — | |
NPGR002 | Digital Image Processing | 4 | 3/0 Ex | — | |
NPGR038 | Introduction to Computer Game Development | 5 | — | 2/2 C+Ex | |
NPFL124 | Natural Language Processing | 4 | — | 2/1 C+Ex | |
NPFL012 | Introduction to Computer Linguistics | 3 | 2/0 Ex | — | |
NSWI004 | Operating Systems | 4 | 2/1 MC | — | |
NPRG036 | Data Formats | 5 | — | 2/2 C+Ex | |
NSWI090 | Computer Networks | 3 | — | 2/0 Ex | |
NSWI143 | Computer Architecture | 3 | — | 2/0 Ex | |
NDBI007 | Database Access Methods | 4 | 2/1 C+Ex | — | |
NDBI040 | Modern Database Systems | 5 | — | 2/2 C+Ex | |
NSWI098 | Compiler Principles | 6 | 2/2 C+Ex | — | |
NPRG042 | Programming in Parallel Environment | 6 | — | 2/2 C+Ex | |
NSWI142 | Web Applications Programming | 5 | 2/2 C+Ex | — | |
NPRG054 | High Performance Software Development | 6 | — | 2/2 C+Ex | |
NPRG051 | Advanced C++ Programming | 5 | — | 2/2 C+Ex | |
NPRG021 | Advanced Java Programming | 5 | — | 2/2 C+Ex | |
NPRG038 | Advanced C# Programming | 5 | — | 2/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
Code | Subject | Credits | Winter | Summer | |
NTIN061 | Algorithms and Data Structures 2 | 5 | 2/2 C+Ex | — | |
NAIL062 | Propositional and Predicate Logic | 5 | 2/2 C+Ex | — | |
NMAI055 | Mathematical Analysis 2 | 5 | 2/2 C+Ex | — | |
NDMI011 | Combinatorics and Graph Theory 1 | 5 | 2/2 C+Ex | — | |
Programming in Java/C++/C# | 5 | 2/2 C+Ex | — | ||
NTIN071 | Automata and Grammars | 5 | — | 2/2 C+Ex | |
NPRG005 | Non-procedural Programming | 5 | — | 2/2 C+Ex | |
NOPT048 | Linear Programming and Combinatorial Optimization | 5 | — | 2/2 C+Ex | |
NMAI059 | Probability and Statistics 1 | 5 | — | 2/2 C+Ex | |
NPRG045 | Individual Software Project | 4 | — | 0/1 C | |
Elective course – group 1 | 5 | 2/2 C+Ex | |||
Elective courses | |||||
Optional courses |
Third year
Code | Subject | Credits | Winter | Summer | |
NDBI025 | Database Systems | 5 | 2/2 C+Ex | — | |
NSZZ031 | Bachelor Thesis | 6 | — | 0/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.Code | Subject | Credits | Winter | Summer | |
NOPT046 | Discrete and Continuous Optimization | 5 | — | 2/2 C+Ex | |
NDMI084 | Introduction to Approximation and Randomized Algorithms | 5 | 2/1 C+Ex | — | |
NDMI010 | Graph Algorithms | 3 | 2/0 Ex | — | |
NDMI009 | Introduction to Combinatorial and Computational Geometry | 5 | 2/2 C+Ex | — | |
NDMI012 | Combinatorics and Graph Theory 2 | 5 | — | 2/2 C+Ex | |
NAIL063 | Set Theory | 3 | — | 2/0 Ex | |
NMAI062 | Algebra 1 | 5 | 2/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)
- – Algorithms and Data Structures 2 (NTIN061)
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)