Inhalte:
Formale Verfahren zur Spezifikation und Verifikation imperativer Programme:
- Syntax und operationelle Semantik imperativer Programmiersprachen (Python)
- Bedingungen auf dem Zustandsraum (assertions)
- Hoare-Kalkül, partielle Korrektheit, Termination
Konzepte imperativer und objektorientierter Programmierung (Java):
- primitive und zusammengesetzte Datentypen,
- Methoden (Prozeduren und Funktionen), Parameterübergabe, Überladung
- Module, Klassen, Objekte
- Klassenhierarchien, Vererbung, abstrakte Klassen, Schnittstellen
- Polymorphie
Programmiermethodik:
- schrittweise korrekte Programmentwicklung
- Teile und Herrsche
- Backtracking
Analyse von Laufzeit und Speicherbedarf:
- O-Notation
- Umwandlung von Rekursion in Iteration
- Algorithmen, Datenstrukturen und Datenabstraktion
Wichtige Hinweise
- Vorbesprechung am 10.08.2015, 9:00 in SR-005, Takustr. 9
- neben den Vorlesungen (täglich 9:00-11:30) finden nachmittags Übungen (13:00-15:30) und Fragestunden (ab 15:30) statt
- Klausurtermine: 24.8. (Python) und 7.9. (Java), jeweils 9:00
- in der vierten Woche wird ein benotetes Programmierprojekt durchgeführt.