Die Lehrveranstaltungen dieses Moduls vermitteln fachlichen Grundlagen der Softwareentwicklung und der Informatik. Die Studierenden lernen, kleine Probleme zu analysieren und sie mit Hilfe von Programmen zu lösen. Sie wenden bestehende Lösungskonzepte an, um komplexere Probleme in kleinere aufzuteilen. Darüberhinaus lernen Sie existierende Algorithmen zu bewerten und anzuwenden.
Die Studierenden werden befähigt, die grundlegenden Java-Programmiersprachenkonstrukte, wie Variablen, Kontrollstrukturen, Methoden, Klassen, Objekte und Felder zum Lösen einfacher Probleme anzuwenden.
Die Hörer der Vorlesung erlernen Programmier- und Dokumentationskonventionen, um Java-Programme lesbar zu schreiben.
Die Studierenden erkennen rekursive Problemstrukturen und lösen Sie mit rekursiven Algorithmen.
Das Zusammenspiel von Compiler und Virtual-Machine wird von den Hörenden verstanden, Anbindungsmöglichkeiten an das Betriebssystem sind ihnen bekannt.
Die Strukturierung von Java-Projekten in Module, Pakete, Dateien und Klassen ist den Studierenden geläufig und wird von der Paket- bis zu Klassenebene selbstständig eingesetzt.
Sie sind zum Einsatz von Vererbung, Information-Hiding und Polymorphie befähigt.
Die Teilnehmer der Vorlesung wenden ihre Kenntnisse anhand von Übungsaufgaben an.
Lösen einfacher Aufgaben während der Vorlesung.
Mit wöchentlichen Übungsaufgaben vertiefen die Studierenden am Rechner die praktischen Inhalte der Vorlesung.
Sie benutzen eine integrierte Java-Entwicklungsumgebung, um damit Programme zu erstellen, zu testen und zu ändern. In den darauf folgenden Übungen programmieren die Studierenden einfache Berechnungen mit Java unter Verwendung von Variablen, Ausdrücke und Kontrollstrukturen. Dabei werden auch Aufgabenstellungen der grafischen Datenverarbeitung bearbeitet. Später entwickeln die Studenten objektorientierte Programme am Rechner. Am Ende lösen Sie rekursive Probleme und implementieren beispielsweise Lösungsstrategien mit Hilfe von Backtracking.
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 kontextfreien Sprachen besprochen.
Die Lehrveranstaltung findet als reine Vorlesung statt. Zahlreiche Übungsaufgaben vertiefen die vermittelten Gebiete und werden in evtl. zusätzlich angebotenen Tutorien diskutiert.