Höhere Programmierkonzepte Übersicht zur Vorlesung Prof. Dr. Nikolaus Wulff
Organisatorisches Die Veranstaltung HPK hat drei Säulen: 1. Eine allgemeine Vorlesung. 2. Übungen mit seminaristischen Anteilen zur Vertiefung der Vorlesungsinhalte. 3. Ein Praktikum mit dezidierten Aufgaben zur Anwendung der Theorie. Skripts und Aufgaben finden Sie auf der Web-Site http://www.lab4inf.fh-muenster.de Navigation zu: Lectures -> Höhere Programmierkonzepte Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 2
Ziele der Vorlesung Sie kennen weitergehende Konzepte der nebenläufigen und verteilten Programmierung. Sie können beurteilen, wann und wie ein Algorithmus sich erfolgreich parallelisieren oder verteilen lässt und können dies am Beispiel der Java Virtuellen Maschine implementieren. Sie wissen um die Vor- und Nachteile der Java Sprache und können gezielt weitere Sprachen oder generative Ansätze einsetzen. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 3
Übungen Die Vorlesung kann nur Anregungen bieten, ersetzt aber nicht das eigenständige Arbeiten und das Aneignen neuer Techniken und Methodiken. Die Veranstaltung HPK verlangt von Ihnen eine aktive Auseinandersetzung mit dem Vorlesungsstoff. Übungen dienen zur Vertiefung des Stoffes, der Klärung von Problemen und Ihrer eigenen Leistungsstandkontrolle. Übungen werden in mehr oder weniger regelmäßigen Abständen in die Vorlesung seminaristisch mit eingebunden. Der Beitritt zum Diskussionsforum zu HPK ist im ILIAS bis Ende Oktober freigeschaltet. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 4
Spielregeln Sollte die Vorlesung oder der Dozent zu langweilig sein, liegt es an Ihnen durch interessante Fragen zum Stoff die Veranstaltung zu beleben und den Dozenten dezent auf den Mißstand hinzuweisen. Handy's, Tablets, Notebooks etc. sind in der Vorlesung unerwünscht/verboten. Facebook, YouTube, WhatsApp, SpiegelOnline und Fußballwetten gehören nicht in diese Vorlesung. Ein offenes Notebook signalisiert dem Dozenten, dass jemand eine Frage oder Lösung für alle Anwesenden am Beamer erörtern möchte. Nur zu diesem Zweck werden Notebooks in den Übungen benötigt... Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 5
Praktikum Häufig wird von Studierenden über eine ungünstige Arbeitsverteilung innerhalb größerer Teams geklagt. Viele Mitläufer ohne eigene Beiträge. Ausfall einzelner Teammitglieder. => Ungerechte Verteilung der Last. Das HPK Praktikum findet in Kleingruppen à 2 Personen statt, so dass alle dieselbe Last tragen. Es sind 5 Praktika geplant, die in der Regel 14-tägig statt finden. Auf Grund der hohen Studentenzahl werden Sie wieder parallel in D117 + 118 arbeiten. Die Einteilung wird durch Herrn Ruhwinkel vorgenommen. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 6
Vergleich Informatik II zu HPK Die Vorlesung HPK ist deutlich anspruchsvoller als Info II, mit mehr SWS ausgestattet, umfasst mehr Stoff und erfordert Vor- und Nachbereitung. Gute Programmierkenntnisse werden vorausgesetzt! Anzahl 18 16 14 12 10 8 6 4 2 0 HPK 2012/13 1 2 3 4 5 Note Anzahl 18 16 14 12 10 8 6 4 2 0 Info II SS 13 1 2 3 4 5 Note Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 7
Evaluierung WS 12/13 Übergang Info I&II zu HPK sehr hart Roter Faden wurde vielen nicht klar... Zu aufwändiges Praktikum Ohne Programmierkenntnisse nicht zu bestehen (richtig!) Viele mussten von anderen lernen (ist das schlecht?) Einige kamen nur mit Abschreiben durch (sehr schade!) Die Aufgabenstellung war Einigen zu schwammig vorgegeben Anderen zu fest vorgegeben... Einige hatten viel gelernt und empfanden auch das Praktikum im Nachhinein als einfach. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 8
Der rote Faden Ziel der Vorlesung ist es Kenntnisse zu vermitteln, die über das reine Programmieren hinaus gehen. Es geht sowohl um die Anwendung theoretischer Konzepte in der Praxis, als auch um neue Entwicklungen in der Informatik bedingt durch Multi-Core Prozessoren und neue Sprachen und Spracherweiterungen. Nicht alles kann in der vollen Tiefe behandelt werden, aber Sie werden in Übungen und Praktika einen guten Überblick über unterschiedliche aktuelle Strömungen bekommen. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 9
Inhalte Codegenerierung: Von Automaten und Grammatiken hin zu eigenen Sprachen. Parallele Java Threads und deren Synchronisierung. Verteilte Java Threads mit RMI. Generics: Java Spracherweiterungen. Einbinden anderer Sprachen in die JVM: von Java zu C/C++ per JNI. Java Scripting: JavaScript und Groovy. All dies wird in Übungen und Praktika behandelt, es wird daher sehr aufwendig aber auch spannend... Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 10
Literatur C.A.R. Hoare, Communicating Sequential Processes online als PDF: http://www.usingcsp.com/cspbook.pdf S. Oaks & H. Wong Java Threads Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 11
Literatur H. Kredel & A. Yoshida, Thread- und Netzwerk- Programmierung in Java J. Magge & J. Kramer Concurrency State Models & Java Programms (neue Auflage 2006) Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 12
Literatur Java Code-Generatoren: Terence Parr The Definitive ANTLR Reference http://www.antlr.org JavaCC https://javacc.java.net 4 Beide Werkzeuge werden meist in Vorlesungen für Compilerbau eingesetzt, eignen sich aber auch zum Erstellen von Domain Specific Languages (DSL) und es gibt passende Eclipse Plugins. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 13