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 nameCreditsDetailsTerm
CS 304 – Programmierpratikum I5

Bachelor course

Fall
CS 305 – Programmierpraktikum II5

Bachelor course

Spring
CS 306 – Praktikum Software Engineering5

Bachelor course

Spring
CS 308 – Softwaretechnik I6

Bachelor course

Spring
DS 450 – Programming for Data Scientists6

Master course

Fall
CS 500 – Advanced Software Engineering6

Master course

Fall
CS 600 – Model-Driven Development6

Master course

Fall
CS 630 – Generative Software Engineering6

Master course

Spring
  • 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

  • DS 450 – Programming for Data Scientists

    The course will provide data scientists with the knowledge they need to be able to apply Python3 in data science projects.

    Topics covered include –

    • basic concepts of (object-oriented) programming
    • programing in the Python programming language
    • advanced libraries such NumPy and pandas
    • Python development tools (text editor, IDE)

    After taking the course, students will be familiar with Python3 and will be able to use it in data science projects. 

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

    Participants: MMSDS 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

  • CS 630 – Generative Software Engineering

    The course introduces the fundamental principles, practices and applications of generative software engineering (GSE) as well as the supporting models, tools and services. Key topics addressed include:

    • Software Recommendation and Reuse
    • Code Search Engines
    • Principles of GSE
    • Existing GSE models, tools and services
    • Defining GSE “problems”
    • Applications of GSE
    • Evaluation and comparison of GSE models, tools and services

    After taking the course students will be familiar with the principles, practices and applications of GSE as well as supporting models, tools and services. Students will have the ability to judge, select, and apply GSE techniques and tools in practical software engineers, as well as the ability to understand academic GSE publications and to perform research in GSE. Students will have improved skills in analytical thinking and applying theoretical knowledge to solve practical problems, especially in the use of AI to enhance software engineering.

    ECTS: 6
    Language: English
    Prerequisites: CS 500 – Advanced Software Engineering (Software Testing and Experimentation)

    Recommended: Knowledge of Java and/or Python
    Evaluation: written exam

    Contact: Marcus Kessel