Lernziehle

Ziel des Faches Theoretische Informatik ist es, die theoretischen Grundlagen von Logik, formalen Sprachen, Automaten, Berechenbarkeit und Komplexitätstheorie zu vermitteln.

Die Prädikatenlogik als wichtige Grundlage für formale Verfahren in Programmverifikation, Hardwaredesign und künstlicher Intelligenz wird von Grund auf als formale Sprache mit deklarativer Semantik eingeführt. Der für automatische Beweiser und Verifikationssysteme wichtige Resolutionskalkül wird ausführlich behandelt.

Es wird ein vertieftes Verständnis von formalen Sprachen und Maschinenmodellen als Voraussetzung für die Entwicklung von Suchmaschinen, Lexern, Parsern und Compilern vermittelt. Weiter werden die Grenzen der Berechenbarkeit erlernt. Die Studierenden sollen verstehen, dass es Funktionen gibt, die ein Computer prinzipiell nicht berechnen kann. Die berechenbaren Sprachen werden schließlich in der Komplexitätstheorie in Klassen eingeteilt.

Im Einzelnen werden folgende Kompetenzen vermittelt:

  • Die Chomsky-Hierarchie verstehen. Formale Sprachen mit Hilfe von Grammatiken erzeugen können. Zentrale Ergebnisse zu regulären und kontextfreien Sprachen beherrschen und nutzen können, insbesondere Pumping-Lemmata, reguläre Ausdrücke und CYK-Algorithmus. Anwendungsmöglichkeiten formaler Sprachen wiedergeben können. Abschlusseigenschaften und Entscheidbarkeitsergebnisse für die verschiedenen Sprachtypen kennen.
  • Zentrale Ergebnisse zu endlichen Automaten und Kellerautomaten verstehen und anwenden können. Weitere Automatenmodelle kennen lernen und verwenden können.
  • Verschiedene Konzepte und Varianten von Turingmaschinen und deren Ausdrucksmächtigkeit erlernen und anwenden können. Zusammenhänge verschiedener Berechenbarkeitsbegriffe und Programmiersprachenkonzepte erlernen. Zusammenhang von Turingmaschinen und Computern sowie die Church'sche These verstehen. Zentrale Entscheidbarkeitsbegriffe und deren Zusammenhänge herleiten können. Grenzen der Berechenbarkeit bzw. algorithmischen Lösbarkeit und das Halteproblem verstehen. Unentscheidbarkeit von Problemen mit Reduktion beweisen können.
  • Algorithmische Komplexität nach dem O-Kalkül beherrschen. Zentrale Ergebnisse zu Komplexitätsklassen für Probleme (Komplexitätstheorie) erlernen. Grenzen der effizienten Berechenbarkeit und das SAT-Problem verstehen. NP-Vollständigkeit von Problemen mit polynomieller Reduktion beweisen können.
  • Zentrale Ergebnisse zu Aussagenlogik und Beweisverfahren verstehen. Die Prädikatenlogik erlernen. Den Resolutionskalkül beherrschen. Grenzen der Logik kennen lernen.

I Formale Sprachen 1. Sprache und Grammatik 2. Endliche Automaten und Reguläre Sprachen 3. Kontextfreie Sprachen

II Berechenbarkeit 4. Die Turing-Maschine 5. Entscheidbarkeit 6. Unentscheidbarkeit 7. Turing-Maschinen und Sprachklassen 8. Alternative Berechnungsmodelle

III Komplexitätstheorie 9. Komplexität Messen 10. Effizienz 11. NP-Vollständigkeit 12. Zusammenhänge von Raum und Zeit

IV Logik 13. Aussagenlogik 14. Prädikatenlogik