Winter semester 2023/2024
The content on this page was translated automatically.
After a general overview of computer science, the course focuses on learning programming using the Java language as an example. It teaches practical skills in creating your own small Java programs as well as basic, language-independent concepts of program structuring and implementation. These include, for example, expressions vs. instructions, data types, methods with parameter transfer mechanisms, compilers vs. interpreters, memory areas and recursion. Students also gain an initial insight into the Java class library, object-oriented, functional and parallel programming as well as Python as a further programming language.
Example programs implement well-known search and sorting methods, among other things. Background information includes the design principle of divide-and-conquer and asymptotic runtime evaluation using O-notation. Furthermore, approaches to ensure the correctness of programs such as assertions and debugging are discussed. In the practical exercises, great emphasis is placed on developing a good programming style.
Study program
Bachelor of Computer Science, Mathematics, Physics and Technomathematics
Scope
6 SWS (9 credits)
Further information on the lecture and exercises can be found in the HIS and in the Moodle course. If you have any questions, Prof. Dr. Claudia Fohry and M.Sc. RĂ¼diger Nather will be happy to answer them.
The course begins with an introduction to the subject matter, areas of application and basic concepts of parallel computing. We cover design techniques for parallel algorithms (e.g. parallel divide-and-conquer) as well as general requirements for the design of efficient programs (e.g. cache optimization).
Basic knowledge of parallel programming is then taught in the main part using three exemplary programming systems:
- OpenMP for computers with shared memory,
- "APGAS for Java" for computers with distributed or hybrid memory and
- CUDA for GPUs.
Two practical sections are integrated into the course, in which the participants solve programming tasks in teams of two. The results are then presented in examination discussions and form the basis for the assessment of the course.
Study program
Bachelor of Computer Science
Scope
4 SWS (6 credits)
Further information, including the lecture dates, can be found in the course catalog and in the Moodle course. If you have any questions, Dr. Jonas Posner will be happy to answer them.
The course initially covers the established programming systems OpenMP and MPI in greater depth than in the Bachelor's program. The focus will be on advanced language constructs such as OpenMP tasks, MPI communicators and hybrid MPI/OpenMP programming. We discuss the use of the constructs using example applications. The focus is on the design goals of performance and scalability. Some more complex synchronization problems will also be discussed.
In the second part of the course, current parallel programming systems will be presented and compared with established systems. Typical approaches of these systems are the Partitioned Global Address Space (PGAS) and the Asynchronous Many-Task programming AMT. Individual languages are learned and tested, e.g. Cilk, Chapel, HPX and Charm++. We also discuss cross-cutting topics such as design patterns, fault tolerance and elasticity.
Previous knowledge from Introduction to Parallel Processing is an advantage for attending the course, but not essential. The course is divided into a lecture and a practical part. The practical part includes the development of programs with the programming systems covered. You will typically work in teams of two during the internship. The work placement, together with a final discussion, forms the basis for the assessment of the course.
Study program
Master Computer Science
Scope
4 SWS (6 credits)
Further information, including the lecture dates, can be found in the course catalog and in the Moodle course. If you have any questions, Prof. Dr. Claudia Fohry and M.Sc. RĂ¼diger Nather will be happy to answer them.