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 und legt den Schwerpunkt auf reguläre und kontextfreie Sprachen.
Die Lehrveranstaltung festigt zunächst Grundlagen im Bereich der Aussagenlogik, der Mengenlehre, des O-Kalküls und elementarer Beweistechniken. Danach werden die klassische Gebiete der theoretischen Informatik wie z.B. endliche Automaten und deren Minimierung, reguläre Ausdrücke, die Chomsky-Hierarchie, das Pumping-Lemma für reguläre und kontextfreie Sprachen sowie zugehörige Entscheidungsalgorithmen behandelt. Weiterhin werden Kellerautomaten, Normalformen sowie Abgeschlossenheitseigenschaften besprochen.
Ziel ist der Aufbau des Verständnisses für die prinzipielle Berechnungskraft klassischer Computermodelle mit begrenzter Speicherkapazität.
Die Lehrveranstaltung findet als reine Vorlesung statt. Zahlreiche Übungsaufgaben vertiefen die vermittelten Gebiete und werden in evtl. zusätzlich angebotenen Tutorien diskutiert.