Courses Offered

1st Semester (Autumn)
SIN.01023 Introduction to Programming
Programming is one of the most basic and essential skills that each computer scientist must have. This course therefore teaches basic programming concepts. Students learn the elementary control and data structures that are necessary for developing computer programs.
SIN.01021 Networks
The most important protocols and services that enable computertocomputer communication are discussed in this course. Starting with local networks, how the Internet functions and how secure communication over the Internet can be achieved are then explained.
SIN.01022 Computer Architecture
This course focuses on computers as digital electronic systems. This view of computers requires an understanding of logical operations and binary arithmetic, the interaction between the processor, memory, and peripheral devices, as well as the machine language that the processor understands.
SMA.00103 Introduction to Analysis I (lecture with exercices)
The courses Introduction to Analysis I and II refresh knowledge of real functions (differential and integral calculus) acquired in the gymnasium and enhance them, especially in the area of differential equations, for which purpose complex numbers are also introduced.
SMA.00202 Introductory linear algebra (lecture with exercices)
Starting with solving linear equation systems, the Introductory Linear Algebra course introduces an area of fundamental importance for every mathematical discipline.

2nd Semester (Spring)
SIN.02020 SystemsOriented Programming
In addition to teaching more advanced programming, this course focuses in particular on how computers and running programs interact. The program will use and/or manipulate resources available in the computer (e.g. memory management or use of operatingsystem functions).
SIN.02022 Robotics
Controlling robots is one important application area of computer science. Depending on the task, robots need to master complex movement patterns or learn an unknown environment. The main goal of this course is to communicate these different aspects of robotics, including common learning algorithms.
SIN.02023 ObjectOriented Programming
Objectoriented programming is a very systematic, structured way of programming. (Abstract) objects mutually influence one another to achieve the desired functionality of a program. An object can be derived from another object and inherit its properties, which can then be adapted. Objects can be encapsulated, meaning that they can only be accessed in very specific ways.
SMA.00104 Introduction to Analysis II (lecture with exercices)
The courses Introduction to Analysis I and II refresh knowledge of real functions (differential and integral calculus) acquired in the gymnasium and enhance them, especially in the area of differential equations, for which purpose complex numbers are also introduced.
SMA.00402 Introductory Statistics (lecture with exercices)
The Introductory Statistics course gives an introduction to statistical methods that is essential for every scientist.

3rd Semester (Autumn)
SIN.03024 Databases
Many computer science applications in practice require storing and retrieving data in an efficient way. This is precisely the task of data bases. They are treated in this lecture both formally (modelling) and practically (data base management systems, query languages).
SIN.3023 Algorithmics
In programming courses, you learn how to implement/program specific problem solving strategies. This course focuses on teaching common problem solving strategies (algorithms) for frequently occurring problems (e.g. sorting, searching in graphs, etc.) and on how to conceptualize new ones. Additionally, the quality of algorithms (in terms of time and memory efficiency) will be discussed.
EIG.00231 Information Systems Modeling
The information Systems Modeling course focuses on the modeling of systems information and data processed therein, for example by means of XML.
SMA.07003 Mathematical Methods for Computer Science I (lecture with exercices)

4th Semester (Spring)
SIN.04023 Software Engineering
Large software systems are not developed ad hoc by an individual person, they are usually developed in a systematic way by a team of developers. It is precisely this systematic way of developing software that is denoted by the term software engineering. This course focuses on the semiformal design of software, as well as on established software design patterns.
SIN.04022 Operating Systems
Operating systems are the interface between computer hardware and applications. They must make the managed memory accessible to applications and enable interprocess communication. Additionally, they must manage the input/output to/from peripheral devices and the computer network. All of these functionalities are addressed in this course, and concrete operating systems are discussed.
SIN.04028 Process Control
Computers can be used to control processes in the physical world. To do so, a suitable “virtual” representation of real processes must be developed, and the physical process must be controllable using suitable interfaces. This course discusses how computers are used to control real processes.
SMA.07004 Mathematical Methods for Computer Science II (lecture with exercices)

5th Semester (Autumn)
SIN.05020 Functional and Logical Programming
Functional programming is a mathematically inspired way of programming in which program functions are perceived as mathematical functions. Therefore, recursion becomes the main programming concept. Logical programming is a way of programming inspired by formal logical systems. The program is based on axioms (facts) and derivation rules. Both programming concepts have certain similarities and are therefore treated together in this course.
SIN.05022 Concurrent and Distributed Computing
If several programs or processes are running in parallel to jointly solve a task, one talks about concurrent and distributed systems. In this area of computer science, new problems emerge that are not common in single processing: programs can mutually block themselves (deadlocks) or simultaneously manipulate a shared resource in an inconsistent way. Fundamental programming techniques for distributed systems are discussed in this course.

6th Semester (Spring)
SIN.06021 Formal Methods
The goal of formal methods is to avoid conceptual errors in software development. A program is analysed logically and checked for logical inconsistencies. This course discusses concepts and algorithms in logic for treating formal methods. Simultaneously, fundamental concepts such as computability and tractability of problems are discussed.
SIN.06022 Machine learning
The goal of formal methods is to avoid conceptual errors in software development. A program is analysed logically and checked for logical inconsistencies. This course discusses concepts and algorithms in logic for treating formal methods. Simultaneously, fundamental concepts such as computability and tractability of problems are discussed.
SIN.06020 Bachelor Thesis
The Bachelor thesis is a substantial individual student project at the end of the Bachelor programme. The student should show, using the skills acquired during their studies, that they are able to deal with a computer science task in an independent manner. Writing a dissertation (final report) on the project carried out and giving a final presentation are part of the Bachelor thesis. To carry out the Bachelor thesis, the student must find a supervisor (professor or lecturer) who is capable of supervising a project in the field of the Bachelor thesis. The supervisor is responsible for guiding the student throughout the thesis.

Teaching Units for Minors and Supplementary Disciplines
SIN.00120 Scientific Programming
In addition to their specific subject, a basic knowledge of computer programming is usually needed for students in the Faculty of Science. The goal of this course is to provide these students with programming skills that are applicable to different disciplines in mathematics and science.
SIN.00121 Scientific Programming (for Biomedical Sciences)
A basic knowledge of computer programming is usually needed for biomedical sciences students. The goal of this course is to provide these students with the programming skills needed for their discipline.
SIN.00220 Data Processing and Visualization
In virtually all scientific disciplines, data must be processed and visualised in a suitable way. This course teaches techniques that allow processing data with regard to its visual presentation.