Dieses Modul behandelt fortgeschrittene Aspekte der Programmierung im Team und findet regelmäßig im Block in der Sommerpause statt. Es ist ist als Praktikum in allen Informatikstudiengängen anrechenbar sowie als Softwareentwicklungspraktikum im Studiengang Software-System-Entwicklung. Es bildet eine gute Grundlage für den späteren Besuch von vertiefenden Veranstaltungen zu den Themen Softwarearchitektur oder Projektmanagement.
Ausgehend von einem vorgebenen Minimalsystem (einem einfachen textbasierten Adventure-Game) wird in einem Team von bis zu 12 Personen inkrementell ein Spiel mit einem reichen Funktionsumfang entwickelt. Notwendige technische Grundlagen vermitteln die Teilnehmer sich zu Anfang gegenseitig in Form von Kurzvorträgen. Wichtiger Bestandteil des Praktikums ist neben der eigentlichen Softwareentwicklung auch die abschließende Präsentation der Ergebnisse.
Die Teilnehmer sollen die für Softwareentwicklung in der Praxis notwendigen technischen, organisatorischen und sozialen Fertigkeiten erwerben. Sie lernen dazu unter anderem, wie im Team mit Versionsverwaltungssystemen umgegangen wird und wie durch Refactorings und automatisierte Unit-Tests die Softwarequalität verbessert und erhalten wird. In gemeinsamen Entwurfsdiskussionen üben sie Grundlagen der Softwarearchitektur wie zum Beispiel den Einsatz von Entwurfsmustern ein.
In diesem Praktikum werden intensiv zentrale Techniken des Extreme Programming und von SCRUM eingesetzt. Im Kern steht die "Extreme Week": Die Teilnehmer arbeiten in Paaren, programmieren test-getrieben, integrieren kontinuierlich in ein Quelltextverwaltungssystem und legen täglich in einem Stand-Up-Meeting über ihren Fortschritt Rechenschaft ab. Die Anforderungen werden in Form von Stories an das Team herangetragen, die Ergebnisse müssen in regelmäßigen Abnahmen durch den "Kunden" präsentiert werden. Aufwände werden aufgrund der Erfahrungen vorheriger Iterationen geschätzt, so dass das Team graduell bessere Kenntnisse über sein Leistungsvermögen erhält.
In der Abschlusspräsentation aller Gruppen geht es nicht nur um eine attraktive Darstellung der erreichten Funktionalität, sondern auch um eine Darstellung der zugrunde liegenden Architektur und der Reflexion über den Entwicklungsprozess.