Modul Konzepte von Programmiersprachen, Informatik (Master) (SPO 8)

Englische Sprache
Kompakte Schrift

Farbschema

Modulübersicht

Konzepte von Programmiersprachen

INFM120SE

Prof. Dr. Martin Sulzmann

/

Alle Semester

keine

keine

Programmiersprachen sind das grundlegendste Werkzeug von Programmierern. Dieser Kurs behandelt die Grundlagen der Theorie der Programmiersprachen, ihre Anwendungen auf heute weit verbreitete Sprachen und Trends auf diesem Gebiet, die wahrscheinlich dazu beitragen werden, die Programmiersprachen von morgen zu definieren. Nach diesem Kurs verfügen die Studierenden über ein Verständnis für ein breites Spektrum an Programmiersprachenkonzepten und sind in der Lage, sich schnell an neue Programmiersprachen anzupassen. Eine Mischung aus schriftlichen und praktischen Übungen hilft den Studierenden, verschiedene Programmierstile in mehreren Programmiersprachen zu verstehen.



Inhalt.



Verschiedene Programmierstile mit Schwerpunkt auf funktionaler Programmierung:


  Datentypen und Mustervergleich

  Funktionen höherer Ordnung

  polymorphe Typen



Verschiedene Arten von Polymorphismus:


  Subtypisierung (strukturell und nominal)

  Generics

  Überladung



Programmkorrektheit:


  statische Verifizierungsmethoden

  Testmethoden wie QuickCheck



Es gibt keine Abschlussprüfung. Die Bewertung basiert auf Quizzes, Midterms und mehreren kleineren Projekten, die während des Semesters durchgeführt werden.

Einzelprüfungen
Lehrveranstaltung Optimierung von Programmen Übung

INFM122E

Übung

Prof. Dr. Christian Pape

deutsch

4/3

120 Stunden gesamt, davon 45 Stunden Kontaktstudium.

Übung 1 Semester (nicht benotet)

Die Studierenden lernen, komplexe Algorithmen mit einer systemnahen prozeduralen oder objekt-orientierten Programmiersprache wie C oder C++ korrekt zu implementieren.

Sie optimieren diese Algorithmen hinsichtlich der Ausführungsgeschwindigkeit mit verschiedenen Paradigmen wie Hybridisierung oder Techniken zur Cache-Optimierung.

Die Teilnehmer der Veranstaltung messen die Ausführungszeiten und überprüfen empirisch die asymptotische Laufzeit der implementierten Verfahren. Dazu erstellen sie verschiedener Testszenarien, um die Algorithmen darauf basierend zu vergleichen und zu beurteilen.

Die Studierenden dokumentieren und diskutieren die Ergebnisse. Sie analysieren ihre Optimierungen und erklären die Resultate.

Die zu behandelnden Informatikprobleme variieren. Typische Inhalte sind:

  • Raytracing
  • Schnelle Multiplikation von Polynomen und Zahlen
  • Grafisch-Geometrische-Algorithmen
  • Graphenalgorithmen

Die Übungsaufgaben und Zusatzmaterialien werden elektronisch (HTML, PDF, Programmgerüste) zur Verfügung gestellt.

Vorkenntnisse: 

Vertiefte praktische Kenntnisse einer prozeduralen oder objekt-orientierten Programmiersprache wie C, C++, C# oder Java. Implementierung und Testen grundlegender Algorithmen aus dem Bereich der Such-, Graphen- und Sortierprobleme.

Format: Praktische Arbeit, Übungen im Labor mit geringem Vorlesunganteil. Die Ergebnisse werden in den praktischen Übungen von den Studenten vorgestellt und mit dem Dozenten diskutiert. Die Ergebnisse sind von den Studenten in einem Bericht zu dokumentieren.

Betreuung:

Individuelle Betreuung durch den Dozenten während der Präsenzzeit im Rechnerlabor. Außerhalb der Präsenzzeit via E-Mail oder während der Sprechzeiten des Dozenten.

Lehrveranstaltung Programmierparadigmen

INFM121SE

Vorlesung

Prof. Dr. Martin Sulzmann

deutsch

3/3

90 Stunden gesamt, davon 45 Stunden Kontaktstudium.

Übung 1 Semester (benotet)

Programmiersprachen sind das grundlegendste Werkzeug von Programmierern. Dieser Kurs behandelt die Grundlagen der Theorie der Programmiersprachen, ihre Anwendungen auf heute weit verbreitete Sprachen und Trends auf diesem Gebiet, die wahrscheinlich dazu beitragen werden, die Programmiersprachen von morgen zu definieren. Nach diesem Kurs verfügen die Studierenden über ein Verständnis für ein breites Spektrum an Programmiersprachenkonzepten und sind in der Lage, sich schnell an neue Programmiersprachen anzupassen. Eine Mischung aus schriftlichen und praktischen Übungen hilft den Studierenden, verschiedene Programmierstile in mehreren Programmiersprachen zu verstehen.


Inhalt:


Verschiedene Programmierstile mit Schwerpunkt auf funktionaler Programmierung:

  • Datentypen und Mustervergleich
  • Funktionen höherer Ordnung
  • polymorphe Typen

Verschiedene Arten von Polymorphismus:

  • Subtypisierung (strukturell und nominal)
  • Generics
  • Überladung

Programmkorrektheit:

  • statische Verifizierungsmethoden
  • Testmethoden wie QuickCheck

Es gibt keine Abschlussprüfung. Die Bewertung basiert auf Quizzes, Midterms und mehreren kleineren Projekten, die während des Semesters durchgeführt werden.

  • Foliensammlung
  • Tafelmitschrift
  • Ausgearbeitete Beispiele und Übungen
  • Textbuch: Concepts in Programming Languages von John C. Mitchell

Seminaristischer Unterricht mit theoretischen und praktischen Übungen.