We offer regular courses for bachelor and master students on various aspects of Software Engineering. We also offer seminars and theses at both the bachelor and master level.

Course Overviews

Course nameCreditsDetailsTerm
CS 304 – Programmierpratikum I5

Bachelor course

CS 305 – Programmierpraktikum II5

Bachelor course

CS 306 – Praktikum Software Engineering5

Bachelor course

CS 308 – Softwaretechnik I6

Bachelor course

CS 470 – Python for Data Scientists6

Master course

CS 500 – Advanced Software Engineering6

Master course

CS 600 – Model-Driven Development6

Master course

  • CS 304 – Programmierpraktikum I

    Im Programmierpraktikum I werden grundlegende Kenntnisse der objektorientierten Programmierung auf Basis der Sprache Java vermittelt. Die Studierenden werden von dieser Sprache vor allem folgende Grundmerkmale und Konzepte kennenlernen:

    • Basiskonzepte der Programmierung: einfache Datentypen, Variablen, Operatoren, Anweisungen, Kontrollstruk-turen
    • Zusammengesetzte Datentypen (Felder)
    • Objektorientierte Programmierung
    • Klassen (Attribute, Methoden, Konstruktoren)
    • Vererbung
    • Pakete, abstrakte Klassen und Interfaces
    • Java API und wichtige Hilfsklassen
    • Ausnahmebehandlung: Exceptions
    • Programmierung Grafischer Oberflächen Die Programmierausbildung erfolgt auf der Basis des Be-triebssystems Linux. Hierzu werden ebenfalls Grundkenntnisse zu Werkzeugen vermittelt, die es ermöglichen, einfache Java-Programme zu entwickeln.

    ECTS: 5
    Sprache: Deutsch
    Vorkenntnisse: Benutzerkenntnisse eines modernen Betriebssystems
    Prüfungsleistung: Programmiertestat

  • CS 305 – Programmierpraktikum II

    Im Programmierpraktikum II werden die erworbenen Kenntnisse aus der Veranstaltung Programmierpraktikum I erweitert und vertieft. Basierend auf der Programmiersprache Java, werde hier die folgenden Themengebiete vermittelt:

    • Generische Datentypen,
    • Dynamische Mengen (Collections Framework)
    • Stream-Klassen (Java IO)
    • Client-Server Kommunikation
    • Multi-Threading
    • JDBC (Datenbanken)
    • Verarbeitung von XML-Dokumenten
    • Reflection API
    • Testen (JUnit)
    • Weitere ausgewählte Themen

    Darüber hinaus werden Werkzeuge für die Teamorientierte Entwicklung größerer Programmpakete vorgestellt. Dazu gehört insbesondere die Entwicklungsumgebung Eclipse.

    ECTS: 5
    Sprache: Deutsch
    Vorkenntnisse: Programmierpraktikum I
    Prüfungsleistung: Programmiertestat

  • CS 306 – Praktikum Software Engineering

    This is the practical course accompanying Softwaretechnik I. It teaches students to use their knowledge of the theory of software engineering to develop their own software systems.

    The students will receive a set of requirements for a software system just as if they were working on a real industrial project. Their tasks is then to produce a complete software system including a working implementation, a design document, etc. based on the requirements. The students will develop their own solutions in small teams. Each team will have regular meetings to discuss their progress and assign specific tasks to each student in the team.

    The goal of this practical course is to gain a far deeper understanding of software engineering than is possible via studies of the theory alone.

    ECTS: 5
    Language: English
    Prerequisites: CS 302 – Praktische Informatik I, CS 307 – Algorithmen und Datenstrukturen, CS 304 – Programmierpraktikum I, CS 305 – Programmierpraktikum II
    Evaluation: written report, developed software system, team meetings, colloquia, practical exams, programming projects

  • CS 308 – Softwaretechnik I

    This course teaches students about engineering methods and tools for team-oriented development of non-trivial software systems. In particular:

    • Software development processes
    • System and requirements analysis
    • Application design and system architecture
    • Software quality
    • Validation, verification and testing
    • Maintenance

    The students learn about key technologies and processes of modern software engineering. After completion of the course they will be able to describe, design and develop complex software systems while accounting for requirements and risks common in industrial projects (e.g. quality, costs, deadlines, etc).

    ECTS: 6
    Language: English
    Evaluation: written exam
    Prerequisites: CS 302 – Praktische Informatik I, CS 307 – Algorithmen und Datenstrukturen, CS 304 – Programmierpraktikum I
    Recommended: CS 305 – Programmierpraktikum II

  • CS 470 – Python for Data Scientists

    The course will provide data scientists with the knowledge they need to be able to apply Python3 in data science projects. It assumes that students are familiar with another object-oriented programming language such as Java, C# or C++, but does not assume any prior Python knowledge.

    Topics covered include –

    • The Python interpreter & programming paradigms
    • Basic expressions & control flow statements
    • Functions & scoping
    • Data structures
    • Modules
    • Classes & object-oriented concepts
    • Errors and exceptions
    • Testing and debugging
    • Exploring & visualizing data with Python
    • Machine learning applied – clustering and classification
    • Project management & (third-party) software repositories

    After taking the course, students will be familiar with Python3 and will be able to use it in data science projects. Moreover, students get the opportunity to learn Python interactively using Jupyter notebooks and state-of-the-art tools and libraries.

    ECTS: 6
    Language: English
    Prerequisites: None
    Evaluation: written exam (possibly including a programming test)

    Participants: MMDS students only

  • CS 500 – Advanced Software Engineering

    The course deals with the model-based specification of software systems and components as well as their verification, validation and quality assurance. The emphasis is on view-based specification methods that use multiple views, expressed in multiple languages, to describe orthogonal aspects of software systems/components. Key examples include structural views represented using class diagrams, operational views expressed using constraint languages and behavioural views expressed using state diagrams. An important focus of the course is the use of these views to define tests and extra-functional properties.

    After taking the course, students will be familiar with the latest state-of-the-art techniques for specifying the externally visible properties of a software system/component – that is, for describing a software system/component as a 'black box'. Participants will also know how to use the expertise acquired during the course to describe the requirements that a system/component has to satisfy and to define tests to check whether a system/component fulfils these requirements. With the acquired skills and know-how, students will be able to play a key role in projects involving the development of systems, components and software applications.

    ECTS: 6
    Language: English
    Prerequisites: None
    Evaluation: written exam

  • CS 600 – Model-Driven Development

    The course focuses on the principles, practices and tools involved in advanced model driven development. This includes established modeling standard languages (e. g. UML, ATL, OCL, etc. ) and modeling infrastructures (e.g. MOF, EMF, etc. ) as well as bleeding edge, state-of-the-art modeling technologies (e. g. LML, PLM, etc.). Key topics addressed include:

    • Multi-level modeling
    • Meta-modeling
    • Ontology engineering versus model engineering
    • Model transformations
    • Domain specific language definition and use
    • Model creation and evolution best practices
    • Model driven software development
    • Model checking and ontology validation

    After taking the course students will be familiar with the accepted best practices and technologies used in mainstream model-driven development as well as state-of-the-art modeling technologies emerging from research institutions. Students will also know how to apply modeling technologies in real-world projects and will have the capability to analyse, understand and model complex systems.

    ECTS: 6
    Language: English
    Prerequisites: CS 500 – Advanced Software Engineering
    Evaluation: written exam