Inhalte:
Grundlagen der Berechenbarkeit (universelle Registermaschinen, Syntax und operationelle Semantik imperativer Programmiersprachen), Formale Verfahren zur Spezifikation und Verifikation imperativer Programme (Bedingun- gen auf dem Zustandsraum, Hoare-Kalkül, partielle Korrektheit, Termination), Konzepte imperativer und objekt- orientierter Programmierung (primitive und zusammengesetzte Datentypen, Methoden, Parameterübergabe, Über- ladung, Module, Klassen, Objekte, Klassenhierarchien, Vererbung, abstrakte Klassen, Schnittstellen), Program- miermethodik (schrittweise korrekte Programmentwicklung, Teile und Herrsche, Backtracking, Analyse von Laufzeit und Speicherbedarf, O-Notation, Umwandlung von Rekursion in Iteration, Analyse von Such- und Sortier- algorithmen).