Teaching

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 name Credits Details Term
CS 304 - Programmierpratikum I 5

Bachelor course

Fall
CS 305 - Programmier­praktikum II 5

Bachelor course

Spring
CS 306 - Praktikum Software Engineering 5

Bachelor course

Spring
CS 308 - Softwaretechnik I 6

Bachelor course

Spring
CS 500 - Advanced Software Engineering 6

Master course

Fall
CS 600 - Model-Driven Development 6

Master course

Fall
  • CS 304 - Programmier­praktikum I

    Im Programmier­praktikum I werden grundlegende Kenntnisse der objekt­orientierten 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)
    • Objekt­orientierte 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 Grund­kenntnisse zu Werkzeugen vermittelt, die es ermöglichen, einfache Java-Programme zu entwickeln.

    ECTS: 5
    Sprache: Deutsch
    Vor­kenntnisse: Benutzer­kenntnisse eines modernen Betriebs­systems
    Prüfungs­leistung: Programmiertestat

  • CS 305 - Programmier­praktikum II

    Im Programmier­praktikum II werden die erworbenen Kenntnisse aus der Veranstaltung Programmier­praktikum 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 Team­orientierte Entwicklung größerer Programmpakete vorgestellt. Dazu gehört insbesondere die Entwicklungs­umgebung Eclipse.

    ECTS: 5
    Sprache: Deutsch
    Vor­kenntnisse: Programmier­praktikum I
    Prüfungs­leistung: Programmiertestat

  • CS 306 - Praktikum Software Engineering

    This is the practical course accompanying Softwaretechnik I. It teaches students to apply their knowledge of the theory of software engineering by having them develop their own software system.

    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 - Programmier­praktikum I, CS 305 - Programmier­praktikum 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 - Programmier­praktikum I
    Recommended: CS 305 - Programmier­praktikum II

  • 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