Ziele und Inhalt

Das Ziel der Vorlesung ist es ein allgemeines Grundwissen der Informatik zu vermitteln. Vorauslaufend auf die Neugliederung die ohnehin bald kommen wird im Rahmen des Batchelor/Mastersystems wird diese Vorlesung wie zwei Vorlesungen in einem strukturiert: an einem Vorlesungstag werden praktische am anderen theoretische Themen behandelt.

Die Hoehrer die im Gymnasium schon Informatik auf einem anständigen Niveau gehabt haben werden sich sicherlich mal ein bisschen langweilen. Dies ist unvermeidlich, da in Prinzip die Vorlesung für jeden zugänglich sein sollte der ausreichend intelligent und fleisig ist. Vorwissen wird nirgendwo angenommen. Andererseits, ist es klar, dass wenn man wirklich noch gar nichts auf diesem Gebiet weiß, man schon mal ein Paar Stunden länger Arbeiten muss um sich alles anzueignen. Dies gilt gerade auch für das Programmieren: Programmieren kann man als Fähigkeit bezeichnen, etwas das man durch viel Üben lernt, wie Schwimmen.

Lehrziele

Am Ende der Vorlesung sollten die Teilnehmer folgendes können:
  1. Ahnen was Informatik ist
  2. Verstehen was im Rechner abläuft
  3. Strukturiert programmieren
  4. Objekt-Orientiert programmieren
  5. Gestalten eines Applets
  6. Kennen verschiedene Programmierparadigmen
  7. Verstehen einer Syntaxbeschreibung in BNF
  8. Beweisen mit vollständiger und struktureller Induktion
  9. Unterscheiden zwischen Syntax und Semantik
  10. Geben eines formellen Korrektheisbeweises
  11. Erkennen von Textmustern und Verarbeiten von Signalen
  12. Abstrahieren mit Algebren
Die Ziele 1 bis 6 werden im praktischen Teil angestrebt, die Ziele 7 bis 12 im theoretischen Teil.

Leitsätze

Lehrinhalten

Aus den Lehrziele ergeben sich gewisse Lehrinhalte, jedoch nicht die genaue Ausarbeitung und vor allem koennte man die Gewichtung der Themen unterschiedlich waehlen. Aus den Leitsaetze ergibt sich eine Reihenfolge der Themen.

Praktische Themen: Programmierung und System

Zunaechst wird die Programmiersprache C eingefuehrt. Diese bietet dann Anlass zu fragen wie "was passiert eigentlich wenn ein Programm ausgefuehrt wird?" und "wie kann man eine Programmiersprache eindeutig und knapp beschreiben?". Nachdem diese Fragen einigermasse beantwortet sind wird die Programmiersprache Java eingefuehrt. Beinahe alles was im Kontext von C gelernt ist, ist auch relevant fuer Java, allerdings bleiben manche Konzepte bei Java implizit. Java bietet Strukturierungsmoeglichkeiten, die diese Sprache sehr geeignet machen fuer umfassendere Aufgaben, wo C vor allem Anwendung findet in numerischen und anderen berechnungsintensiven Kontexten. Java ist ausserdem die Sprache des Internets im Sinne, das Applets, die animierten Teilen einer Webseite, sehr leicht aus einem Java Programm mit graphischer Oberflaeche zu erhalten sind. Schließlich wird noch betrachtet welche alternative Arten der Programmierung es gibt.

Der Inhalt des praktischen Teils der Vorlesung ist entsprechend der gegebenen Zielsetzung etwa wie folgt. Es wird auch angegeben wieviel Stunden fuer jeden Teil etwa geplant sind. Der Inhalt wird in den jeweiligen Kapitel des Skripts genauer ausgearbeitet.

Theoretische Themen: Korrektheit und Verständnis

Bei der Programmierung entstehen, auch bei erfahrenen Programmierern, Fehler. Viele groessere Softwareprojekte scheitern deswegen (aber auch wegen mangelnder Klarheit / sich aendernder Anforderungen). Es ist ein alter Traum, Programme mit Korrektheitszertifikat abliefern zu koennen. Fuer grosse Projekte ist dies sehr schwierig. Fuer einfache Probleme jedoch, wie zB. die Berechnung des Maximums einer Menge von Elementen, kann ganz formal bewiesen werden, dass ein Programm die Aufgabe erfuellt. Dies ist ein Haupthema der Vorlesung. Danach wird betrachtet wie man auf sehr einfacher Art bestimmen kann ob ein gewisses Muster in einem Text vorkommt, oder wie man die Umrisse einer Figur bestimmen kann. Als Abruendung werden mehrere bis dahin nebeneinander existierenden Systeme mit Rechneregel unter dem gemeinsamen Begriff "Algebra" zusammengefasst.