WiSe 2015/16













Dieses Modul ist importiert: 0087dA.2.5 Nichtsequentielle und verteilte Programmierung für Lehramt
Zugangsvoraussetzungen: Erfolgreiche Absolvierung des Moduls "Objektorientierte Programmierung" Qualifikationsziele: Die Studentinnen und Studenten verstehen die Grundbegriffe der nichtsequentiellen Programmierung mit gemeinsamen Speicher und Nachrichtenaustausch. Sie können nichtsequentielle Programme mit Prozessen/Threads/aktiven Objekten geeignet strukturieren und durch geeignete Synchronisationsverfahren unerwünschte nichtdeterministische Effekte sowie Verklemmungen vermeiden. Sie kennen und verstehen Sicherheitsrisiken, die in nichtsequentiellen Programmen entstehen können und können Methoden einsetzen, diese zu vermeiden. Sie können Eigenschaften von Prozessen und Threads formal spezifizieren und diese exemplarisch verifizieren. Die Studentinnen und Studenten können relevante Interaktionsparadigmen wie Client/Server und Peer-to-Peer unterscheiden und eigene Anwendungen nach diesen Paradigmen geeignet einordnen und verteilte Systeme auf der Basis von Interprozesskommunikation und Fernaufrufen konstruieren. Sie können Webanwendungen, Kunde/Dienstleister-Anwendungen, Peer to Peer Anwendungen geeignet entwerfen, strukturieren und realisieren und verteilte Systeme mit Hilfe geeigneter Middleware entwickeln.

Inhalte: Programmieren und synchronisieren von gleichzeitig laufenden Prozessen, die auf gemeinsamen Speicher zugreifen oder über Nachrichtenaustausch interagieren. - Nichtsequentielle Programme und Prozesse in ihren verschiedenen Ausprägungen, Nichtdeterminismus, Determinierung - Synchronisationsmechanismen: Sperren, Monitore, Wachen, Ereignisse, Semaphore - Nichtsequentielle Programmausführung und Objektorientierung - Ablaufsteuerung, Auswahlstrategien, Prioritäten, Umgang mit und Vermeidung von Verklemmung - Koroutinen, Implementierung, Mehrprozessorsysteme - Interaktion über Nachrichten, Sicherheitsaspekte von Anwendungen im Netzwerk - Programmieren und synchronisieren von gleichzeitig laufenden Prozessen, die über Nachrichtenaustausch interagieren. - Fernaufruftechniken - Client-Server, Peer-to-Peer - Parallelrechnen im Netz - Koordinierungssprachen, Orchestrierung, Choreographie - Verarbeitung auf dem Server und auf dem Client, Mobilität - Middleware, strukturierte Kommunikation, statische und dynamische Schnittstellen - Ereignisbasierte und strombasierte Verarbeitung - Sicherheit von Anwendungen im Netzwerk, Absicherung der Protokolle - Ausblick auf nichtfunktionale Eigenschaften (Zeit, Speicher, Dienstgüte) Kenntnisse des Moduls „Algorithmen, Datenstrukturen und Datenabstraktion“ werden vorausgesetzt. Im Selbststudium erwerben die Studentinnen und Studenten Kenntnisse über Betriebssysteme, die im Zusammenhang mit nichtsequentieller Programmierung stehen (etwa Pipelining, Cache, Speicherhierarchie, Unterbrechungsbehandlung, Puffer, Prozesse/Threads)