Dr. Waldmann - Lehre

Wintersemester 2013/14

Wahlfächer (Master)

Pflichtfach (Master)


Sommersemester 2013

Wahlfächer (Master)

Pflichtfach (Bachelor)

Wintersemester 2012/13

Wahlfächer (Master)

Pflichtfach (Master)


Sommersemester 2012

Wahlfächer (für Master-Studenten):

Pflichtfach:


Wintersemester 2011/12

Wahlfach:

Pflichtfächer:


Sommersemester 2011

Wahlfach

  • Vorlesung Sprachkonzepte der parallelen Programmierung (Informatik-Master)

    OPAL-Gruppe (Einschreibung) | Modulbeschreibung

    Folien: (HTML), (pdf, einzeln) (ps, 8 pro Seite) (pdf, fortlaufend)

    Lernziele/Kompetenzen:

    • Ausdrucksmittel für parallele und nebenläufige Programme in verschiedenen moderen Programmiersprachen kennenlernen
    • ... und an Beispielen anwenden.
    • Aussagen über Korrektheit und Ressourcenverbrauch formulieren und begründen.

    Inhalt:

    • Abstraktionen zur Thread-Synchronisation: Semaphore, Monitore, Kanäle,
    • thread-sichere Collections-Datentypen
    • Transaktionen (Software Transactional Memory)
    • Rekursionsschemata für parallele Programme (skeletal parallelism)
    • map/reduce-Framework
    • impliziter Parallelismus: (Nested) Data Parallelism

Pflichtfach:

Wintersemester 2010/11

Wahlfächer

Pflichtfach:

Sommersemester 2010

Wintersemester 2009/10

Pflichtfach:

Wahlfächer

Vorlesung Funktionale und Logische Programmierung (Informatik-Bachelor)

OPAL-Gruppe (Einschreibung)

Funktionale, logische (und Constraint-) Programmierung gehören zum deklarativen Programmieren, warum ist dieses Paradigma so wichtig?

  • Es geht bei der gesamten Softwareentwicklung darum, gewünschtes Verhalten zu spezifizieren und daraus eine korrekte Implementierung abzuleiten. Ein deklaratives Programm ist eine ausführbare Spezifikation, diese Programme sind also "von selbst" korrekt!
  • Der Einfluß der deklarativen Programmierung zeigt sich zunehmend auch in Mainstream-Sprachen (generische Polymorphie in Java, Lambda-Ausdrücke in C#, usw.) und -Bibliotheken (Entwurfsmuster). So etwas sollte man an der Quelle lernen!
  • Funktionale Programme sind nebenwirkungsfrei und deswegen ganz leicht parallelisierbar. Mit Data Parallel Haskell kann man die Rechenkraft von Multi-Core-Rechnern voll ausnutzen, ohne Programmieraufwand für Threaderzeugung und -Synchronisation.

ergänzende Informationen zur Modulbeschreibung (INBW-LFP, Seite 50):

  • Schwerpunkt ist funktionale Programmierung in Haskell,
    aufbauend auf der Behandlung von Entwurfsmustern in Softwaretechnik 2 (INB-SWT2).
  • logische Programmierung in Mercury,
    aufbauend auf Behandlung von Prolog in Künstlicher Intelligenz (INBP-KI).
  • ein guter Einstiegspunkt ist HAL4 (Tutorial, Workshop, Party) am 12. Juni 2009 in Halle (bitte anmelden wie auf Webseite beschrieben)

    Folien: (HTML), (pdf, einzeln) (ps, 8 pro Seite) (pdf, fortlaufend)

  • Vorlesung Compilerbau (Informatik-Master) (= Compilerbau-Aufbaukurs für Informatik-Diplom))

    OPAL-Gruppe (Einschreibung)

    In Prinzipien von Programmiersprachen haben Sie Sprachen nur benutzt, hier entwerfen und implementieren Sie selbst.

    (Jeder Dozent hält sein Fach für das wichtigste der Welt. So auch hier, und die Begründung ist:)

    Der Compilerbau beruht auf wohl untersuchten theoretischen Grundlagen (formale Sprachen, Attributgrammatiken, Typsysteme, Semantik) und man benötigt die praktische Informatik (effiziente Algorithmen und Datenstrukturen) ebenso wie die technische (Prozessorarchitekturen). Durch sinnreiche Kombination von Methoden dieser Fachgebiete konstruiert man Werkzeuge (Scanner, Parser, Codegeneratoren, Optimierer), die sich seit Jahrzehnten in der Praxis bewähren. Der Compilerbau ist deswegen die Krönung der Informatik und ein würdiger Abschluß Ihres Masterstudiums.

    Folien: (HTML), (pdf, einzeln) (ps, 8 pro Seite) (pdf, fortlaufend)

  • Oberseminar Software aus Komponenten (Informatik-Master/Diplom)

    Opal-Gruppe (Einschreibung)

    Komponententechnologien werden als eine Weiterentwicklung objekt-orientierter Technologien betrachtet. Übergreifende theoretische Konzepte und Prinzipien für Softwarenachnutzung werden im Buch Clemens Szyperski with Dominik Gruntz and Stephan Murer: Component Software - Beyond Object-Oriented Programming, Second Edition, Addison-Wesley / ACM Press, 2002 dargestellt.

    Wir betrachten besonders Komponentenkonzepte auf lose gekoppelten Architekturen, wie sie in der Webservice-Technologie Anwendung finden. Wir vergleichen Komponentenmodelle und -plattformen: CORBA, happstack, Java (EE), .NET.

    Als Anwendungsbeispiel diskutieren wir u.a. die geplante Kopplung von autotool und Olat (Opal). Weitere Beispiele können von den Seminarteilnehmern vorgeschlagen werden, gern auch im Zusammenhang mit in Arbeit befindlichen Projekt- oder Abschlußarbeiten.


Sommersemester 2009

Wahlfach:

  • Vorlesung Constraint-Programmierung (Informatik-Master) Folien: (HTML), (pdf, einzeln) (ps, 8 pro Seite) (pdf, fortlaufend)

    OPAL-Gruppe

    Constraints gibt es überall: die meisten algorithmischen Aufgabenstellungen bestehen aus Einschränkungen an eine Menge von möglichen Lösungen. Die Constraint-Programmierung ist eine Technik zur Lösung solcher Aufgaben, bei der Formulierungen solcher Einschränkungen Bestandteile von Programmen sind. Während ursprünglich hauptsächlich logische Sprachen durch Constraints erweitert wurden, um die Ausdrucksstärke der Sprachen bei der Behandlung arithmetischer Ausdrücke zu verbessern, gibt es heute viele verschiedene Arten von Constraint-Sprachen (deklarative aber auch imperative und objekt-orientierte), und viele Constraint-Domains und entsprechende Lösungsmechanismen sind ausführlich untersucht worden. In der Praxis wird Constraint-Programmierung zum Schliessen mit unvollständigem Wissen, zum Lösen kombinatorischer Probleme, zur Modellierung, Simulation und Diagnose und in vielen anderen Bereichen industriell angewendet. Neben der Vorstellung bestimmter Constraint Systeme und -Lösungsmechanismen sind Sprachen des Constraint Programming, die Modellierung von Constraint-Problemen, heuristische Suche und Optimierung Inhalte von Vorlesung und praktischer Übung.

    Als Beispiel lösen wir das N-Damen-Problem mit einem SAT-Solver: das C#-Programm Queens.cs erzeugt das Boolesche Constraint-System (in konjunktiver Normalform) queens8.cnf und das Programm MiniSat berechnet daraus umgehend eine Lösung queens8.sol. Dabei sind die Felder des Schachbrettes der Reihe nach numeriert und nicht belegte Felder haben ein negatives Vorzeichen. Natürlich ist CNF-SAT NP-vollständig, aber MiniSat ist so effizient, daß auch für größere Felder das Hinschreiben des Constraint-Systems fast länger dauert als das Lösen.

    Literatur

Pflichtfach:

Wintersemester 2008/09

Wahlfächer

Pflichtfächer


Sommersemester 2008

Wahlfächer

  • Oberseminar Praktische Informatik (IN-M)

    Von mir betreute Diplomanden berichten in diesem Seminar über ihre Arbeiten.

    Weitere Themen aus den Bereichen Programmiersprachen, Softwareentwicklung je nach Interesse der Teilnehmer, Vorschläge bitte in OPAL eintragen:

    OPAL-Gruppe (Wiki)

Pflichtfächer:


Wintersemester 2007/08

Wahlfächer

Pflichtfächer:


Sommersemester 2007


Wintersemester 2006/07

Wahlfächer

  • Vorlesung Symbolisches Rechnen Einschreiben, Folien: (HTML), (pdf, einzeln) (ps, 8 pro Seite) (pdf, fortlaufend)
  • (gemeinsam mit Prof. Geser, Prof. Petermann, Prof. Weicker ): Diplomanden-Seminar Praktische Informatik. (Einschreiben)

    • Hintergrundwissen und aktuelle Entwicklungen der praktischen Informatik, insbes. Softwaretechnik;
    • Vorstellung möglicher Diplomthemen
    • Diskussion laufender Diplomarbeiten (Arbeitsberichte)
    • Hinweise zur Arbeits-, Text- und Vortrags-Organisation

    Offen für alle Interessenten. Pflichtveranstaltung für unsere Diplomanden.

Pflichtfächer:


Sommersemester 2006


Wintersemester 2005/06

Sommersemester 2005

Wintersemester 2004

Sommersemester 2004

Wintersemester 2003/04

  • Informatik - für Medientechniker (1. Fachsemester)
  • Compilerbau - für Diplom-Informatiker (7. Fachsemester)

vorher:

Lehrveranstaltungen an der Universität Leipzig (1998-2003) und an der Universität Jena (1993-1998)