Internal Preview! The data shown below is not valid for students! Please refer to the official Module Descriptions at the Examination Office.
Programming 2 Prog2


study semester
standard study semester
every summer semester
1 semester
teaching language


Prof. Dr. Sebastian Hack
Prof. Dr. Sebastian Hack
Prof. Dr. Jörg Hoffmann

Assessment & Grades

entrance requirements

Programming 1 and Mathematics for Computer Scientists 1 and mathematics courses in the study semester or comparable knowledge from other mathematics courses (recommended)

assessment / exams

Examination performances are given in two parts, which contribute equally to the final grade. To pass the entire course, each part must be passed individually.

In the practical part, students must implement a series of programming tasks independently. These programming tasks allow students to practise language concepts and also introduce more complex algorithms and data structures. Automatic tests check the quality of the implementations. The grade of the practical part is largely determined by the test results.

In the lecture part, students must complete written examinations and work on exercises. The exercises deepen the material of the lecture. Admission to the written examination depends on the successful completion of the exercises.

In the practical part, a follow-up task can be offered.


Will be determined from performance in exams, exercises and practical tasks. The exact modalities will be announced at the beginning of the module.


course type /weekly hours
  4 h lectures
+ 2 h tutorial
= 6 h (weekly)
total workload
   90 h of classes
+ 180 h private study
= 270 h (= 9 ECTS)

Aims / Competences to be developed

This course teaches the foundations of imperative and object-oriented programming.

In more detail students learn:

  • how computers execute programs and how to write programs in assembly language
  • to implement, debug, and test smaller C programs
  • to design, implement, debug, and test mid-size Java programs
  • the basics of object-oriented programming
  • a basic understanding of formal semantics, type systems, correctness, testing, and verification of imperative languages


  • Programming at the machine level (assembly)
  • Imperative programming
  • Object-oriented programming
  • Classes and objects
  • Inheritance, sub-typing, and dynamic dispatch
  • Formal semantics and a type system of a simple imperative language
  • Type safety, undefined behavior and their implications
  • Foundations of testing and verification

as well as lectures specifically designed for the individual programming tasks.

Literature & Reading

Will be announced before the start of the course on the course page on the Internet.

Additional Information

This module is identical in content to the German-language module Programmierung 2.


This module is part of the following study programmes:

Computer Science BSc (English): Grundlagen der Informatik
study semester: 2 / standard study semester: 6
Cybersecurity BSc (English): Grundlagen der Informatik
study semester: 2 / standard study semester: 6