Inhalt
- Grundlagen der Berechenbarkeit:
- Universelle Registermaschinen
- Syntax und operationelle Semantik imperativer Programmiersprachen
- Formale Verfahren zur Spezifikation und Verifikation imperativer Programme:
- 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, Polymorphie
- Abstrakte Klassen, Schnittstellen
- Programmiermethodik:
- schrittweise korrekte Programmentwicklung
- Teile und Herrsche
- Backtracking
- Analyse von Laufzeit und Speicherbedarf:
- O-Notation
- Umwandlung von Rekursion in Iteration
- Analyse von Such- und Sortieralgorithmen
- Algorithmen, Datenstrukturen, Datenabstraktion
Literatur
- Sebesta R.: Concepts of Programming Languages, Pearson Education Verlag, 10th Edition, 2012, ISBN: 0131395319
- Block M.: Java-Intensivkurs In 14 Tagen lernen Projekte erfolgreich zu realisieren, Springer-Verlag, 2. Auflage, 2009
- Weiss M. A.: Data Structures & Problem Solving Using Java, Addison Wesley Verlag, 4. Auflage, 2010, ISBN: 0-321-54140-5
- Cormen, Leiserson, Rivest: Introduction to Algorithms, 3. Auflage 2009,
- Sedgewick R., Schidlowsky M.: Bundle of algorithms in java, third edition, parts 1-5, Addison-Wesley Longman, Amsterdam. 2003.
Zusätzliche Informationen
Voraussetzungen
Kenntnisse aus der Vorlesung "Funktionale Programmierung" werden vorausgesetzt.