Java ist eine der populärsten Programmiersprachen und wird stetig weiterentwickelt. Seit Java 7 ist OpenJDK die offizielle Implementierung der Java Plattform. OpenJDK ist Open Source und beherbergt verschiedene laufende Projekte. Diese Projekte formen die Zukunft von Java, indem sie neue Features, Quellcode, Dokumentation etc. beitragen. Im Seminar stellen die Teilnehmer aktuelle OpenJDK Projekte vor. Deren Zielsetzung und den aktuellen Entwicklungsstand erschließen sie sich selbständig aus dem Internet, als Startpunkt dient die offizielle OpenJDK Webseite. Je nach Projekt können und sollen die Teilnehmer die neuen Projekte auchpraktischselbstausprobieren.BeispielprojektesindValhalla,Panama,Amber,GraalundTSAN. Die Teilnehmer können nach Absprache Vorschläge einbringen.

         

In der Veranstaltung erlernen die Teilnehmer die funktionale Programmierung am Beispiel der Sprache Haskell. Die behandelten Sprachkonstrukte reichen von Basics wie Funktionen und Listen über Datentypen und Auswertungsstrategien bis zu fortgeschrittenen Aspekten wie Monaden und Parallelisierung. Die Konstrukte werden jeweils erklärt und ihr Einsatz, beispielsweise in Entwurfsmustern, diskutiert. Neben Haskell wird ein kurzer Einblick in weitere funktionale Sprachen gegeben.

Die Veranstaltung wird in Form einer Vorlesung mit integrierten Übungen durchgeführt. In den ersten Wochen sind zusätzlich Hausaufgaben verpflichtend zu bearbeiten. Die Notenvergabe erfolgt auf Basis einer Projektarbeit, welche in Zweierteams in den letzten Wochen durchgeführt wird. Die Projektarbeit wird durch eine Verteidigung abgeschlossen, bei der die entwickelten Programme vorgestellt und weitere Themen der Vorlesung angesprochen werden.

Die Veranstaltung ersetzt die frühere Bachelorveranstaltung “Funktionale Programmierung“.


   

Die Studierenden lernen grundlegende abstrakte Datentypen der Informatik, effiziente Datenstrukturen für ihre Implementierung sowie effiziente Graph- und Optimierungsalgorithmen kennen. Sie lernen, derartige Algorithmen und Datenstrukturen in Java zu implementieren und machen sich deshalb zunächst mit der Sprache und ihren objektorientierten Konzepten vertraut. Die Studierenden vertiefen ihre Fertigkeiten in der asymptotischen Laufzeitanalyse und erwerben weitere Fertigkeiten in der Bewertung von Algorithmen.

In den begleitenden Übungen wenden sie das Gelernte unter anderem auf den Entwurf und die Implementierung eigener Algorithmen und Datenstrukturen an.