Die Lehrveranstaltungen dieses Moduls vermitteln grundlegende Kenntnisse der Programmierung und der theoretischen Informatik, wie sie zum Rüstzeug eines jeden Informatikers gehören.
So werden grundlegende Konzepte der objektorientierten Programmierung erworben wie Modellierung, Auswahl und Erstellung von Datenstrukturen, Implementierung und Qualitätssicherung. Ebenso werden grundsätzliche Fähigkeiten erlernt, Probleme zu analysieren und mit Hilfe von Programmen zu lösen.
In der theoretischen Informatik werden grundlegende Begriffe wie formale Sprachen, Aussagenlogik und formal-mathematische Automatenmodelle besprochen, ebenso wie deren Relevanz für praktische Anwendungen in der Informatik.
Die Studierenden lernen in dieser Veranstaltung die Grundlagen der objektorientierten Programmierung anhand der Programmiersprache Java kennen.
Klassische Programmierkonstrukte wie Variablen, Typen, Ausdrücke, Kontrollstrukturen und Arrays lernen die Studierenden zum Lösen einfacher Probleme kennen und anzuwenden.
Daneben sollen die Teilnehmer erste Kenntnisse in objektorientiertem Entwurf erwerben und die grundlegenden Begriffe der objektorientierten Programmierung, wie Methoden, Klassen, Objekte und Felder, kennen und in kleinen Programmen anwenden können.
Paradigma zur Problemlösung, wie Divide-and-Conquer, werden vorgestellt ebenso wie deren praktische Umsetzung durch rekursive Programme.
Den Studierenden sind auch, neben Arrays, grundlegende Datenstrukturen wie Listen und deren Implementierung geläufig und können zur Problemlösung eingesetzt werden.
Auch fortgeschrittenere objektorientierte Programmierkonzepte wie Vererbung, Interfaces, Information-Hiding und generische Programmierung sowie Polymorphie sind den Teilnehmern bekannt.
In wöchentlichen Übungsaufgaben vertiefen die Studierenden am Rechner die praktischen Inhalte der Vorlesung.
Sie benutzen dazu anfangs Kommandos im Terminal, später eine professionelle, integrierte Java-Entwicklungsumgebung, um Programme zu erstellen, zu debuggen, zu testen und zu ändern.
Angefangen mit einfachen Berechnungen in Java unter Verwendung von Variablen, Ausdrücke und Kontrollstrukturen, werden die Aufgabenstellungen zunehmend komplexer und beziehen auch einfache Datenmodellierungsaufgaben mit ein. Am Ende werden einfache Spiele programmiert und mathematische Probleme automatisiert gelöst, z.B. durch Näherungsverfahren.
Neben der Korrektheit und Funktionsfähigkeit der Programme erlernen die Studierenden auch, auf einen guten Programmierstil zu achten und Codier-Konventionen einzuhalten, eine Voraussetzung für spätere Arbeit im Team.
Praktische Übungen
Die Lehrveranstaltung führt in die Theorie der formalen Sprachen ein. Das Ziel ist die Vermittlung der Chomsky-Hierarchie als ein Stufenmodell unterschiedlich komplexer Sprachen. Weiterhin werden endliche Automaten als Repräsentanten heutiger Computer vorgestellt und ihre Beschränkungen aufgezeigt. Ein weiteres Lernziel ist die sichere Anwendung verschiedener Beweistechniken.
Die Lehrveranstaltung umfasst unter anderem die folgenden Gebiete der theoretischen Informatik: Aussagenlogik, formale Sprachen, Beweistechniken, das O-Kalkül, endliche Automaten, reguläre Sprachen und Ausdrücke, die Chomsky-Hierarchie, das Pumping-Lemma für reguläre und kontextfreie Sprachen sowie die Minimierung endlicher Automaten nach dem Satz von Myhill-Nerode. Weiterhin werden Kellerautomaten, der CYK-Algorithmus sowie Abgeschlossenheitseigenschaften von regulären und kontextfreien Sprachen besprochen.
Die Lehrveranstaltung findet als Vorlesung statt. Zahlreiche Übungsaufgaben vertiefen die vermittelten Gebiete und werden in evtl. zusätzlich angebotenen Tutorien diskutiert.