Regelmäßige Lehrveranstaltungen

Programmierung 1

Es werden die Grundlagen der Programmierung an Hand der Sprache Java besprochen.

Die Studierenden werden mit elementaren objektroientierten Sprachkonstrukten, wie Klassen, Methoden, Attributen,  Anweisungen, Entscheidungen und Schleifen bekannt gemacht. Die Grundlagen von Objekten und Klassen werden erläutert und problemlösendes Denken an Hand von Programmieraufgaben geübt. Neben Klassen werden noch Interfaces als Verträge über zu implementierende Methoden und der Umgang mit generischen Klassen eingeführt.

Wichtige Algorithmen und Datenstrukturen, wie Rekursion, Stack, WarteschlangenFelder, Suchen und Sortieren  werden ebenso in der Veranstaltung besprochen.

 

Programmierung 2

Aufbauend auf der Veranstaltung Programmierung 1 werden  objektorientierten Konzepte der Programmierung in der Sprache Java vertieft.

Die bekannten Konzepte von Klassen und Objekten werden um objektorientierte Programmierkonzepte wie Vererbung und Polymorphismus erweitert.  Die mit der Sprache Java ausgelieferten Bibliotheken enthalten über 10000 Klassen. Ohne die Kenntnis von Entwurfsmustern ist ein Verständnis der Struktur dieser Biblotheken schwierig. Daher werden die häufigsten Entwurfsmuster,  wie Singleton, Befehl, Beobacher, Iterator, Dekorator erläutert und ihre Anwendung in den Übungsaufgaben vertieft.

Es werden weitere Algorithmen und Datenstrukturen, wie Hashingverkettete Listen, Bäume, einfache Graphen und der Minimax-Algorithmus besprochen.

Programmierung 3

Es werden weiterführende Themen wie Serialisierung, Nebenläufigkeit (Threads) und verteilte Programmierung (Sockets, RMI) vorgestellt.  Der Umgang mit strukturierten Daten (z.B. Datenbanken, XML, JSON) mit Hilfe externer Bibliotheken wird besprochen. Grundzüge der GUI-Programmierung (Model-View-Controller) werden angesprochen.

Mathematik und Computergrafik

Die Veranstaltung Mathematik und Computergrafik besteht aus einem Vorlesungs- und Übungsteil.

In der Vorlesung werden die mathematischen, physikalischen Grundlagen der Computergrafik und zugehörige Algorithmen besprochen. Hierzu gehört die Renderpipeline, die Darstellung von Geometrie mittels VektorenSplines, NURBS sowie die Tesselierung der Geometrie in Primitive, wie etwa Dreiecke. Mit Hilfe von linearer Algebra und Matrizen werden insbesondere Koordinatentransformationen beschrieben. Das Verhalten von Licht wird mittels geometrischer Optik modelliert, seine Interaktion mit Materie wird durch heuristische Modelle, wie das Phong-Modell oder das Cook-Torrance-Modell beschrieben. Zu beachten ist, dass Licht hier nicht durch ein kontinuierliches Spektrum sondern nur durch drei Komponenten (Rot, Grün. Blau) beschrieben wird. Unterschiedliche Realisierungen von Farbräumen und assozierte  physiologische Konsequenzen werden zusammen mit weiteren Ergebnissen zur menschlichen Wahrnehmung besprochen.

Die Projektion der künstlich geschaffenen Welt auf die Bildebene der Kamera wird mit unterschiedlichen Projektionsmethoden beschrieben. Der Weg des Lichts durch die Szene bis zur Kamera wird durch die Rendergleichung gegeben. Diese ist im Allgemeinen nicht exakt lösbar. Die unterschiedlichen Näherungslösungen der Rendergleichung werden algorithmisch  als Renderverfahren, wie etwa die Strahlrückverfolgung, beschrieben.

Im Übungsteil werden Konzepte der Computergrafik in Node.js, ExpressJS und WebGL mit Hilfe von TypeScript und ThreeJS umgesetzt. Hierzu werden in Ergänzung zu den parallel laufenden Veranstaltungen Webprogrammierung und Programmierung 2 grundlegende Konzepte der Node.js-basierten Webprogrammierung mit objektorientertem JavaScript bzw. TypeScript vorgestellt.

Softwarewerkzeuge

Es werden die Prinzipen von DevOps und  der Umgang mit entsprechenden Softwarewerkzeugen besprochen. Hierzu gehören Softwarerevisionssysteme wie Git, Build-Mangementsysteme (Maven, Gradle), Testmanagement (JUnit, Mocking-FrameworksContinuous Integration / Continuous Delivery (Jenkins), Konfigurationsmanagement (Ansible, Vagrant, Docker)

Regelmäßige Lehrveranstaltungen

  • Programmierung 1 - 3
  • Mathematik und Computergrafik
  • Softwarewerkzeuge

Berufsfeldorientierungen (unregelmäßig, nach Bedarf):

  • Digitale Bildverarbeitung
  • Computer Vision
  • Visualisierung
  • Ausgewählte Themen aus der Spieleprogrammierung
  • Ausgewählte Themen aus der Computergrafik
  • Ausgewählte Themen der Shader-Programmierung
  • Ausgewählte Themen aus der Programmierung
  •  Ausgewählte Themen aus der Webprogrammierung