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
- Concepts of Programming Languages, Robert Sebesta, Pearson Education , 10th Edition, 2012, ISBN: 0131395319
- Data Structures & Problem Solving Using Java, Mark Allen Weiss, Addison Wesley, 4. Auflage, 2010, ISBN: 0-321-54140-5
- Cormen, Leiserson, Rivest: Introduction to Algorithms, 3. Auflage 2009,
- Bundle of algorithms in java, third edition, parts 1-5. Sedgewick Robert und Michael Schidlowsky. Addison-Wesley Longman, Amsterdam. 2003.
Organisatorisches:
- Eine Anmeldung zum Kurs kann nur über Onlineanmeldung erfolgen!
- Neben den Vorlesungen (täglich 9:00-11:45 Uhr) finden nachmittags Übungen (13:00-15:30 Uhr) und Fragestunden (ab 15:30 Uhr) statt.
- In den Übungen besteht Anwesenheitspflicht.
- Klausurtermine: 18.09. (Zwischenklausur) und 09.10. (finale Klausur), jeweils 9:00
- Die Gesamtnote setzt sich aus den Ergebnissen der beiden Klausuren (jeweils 40% und 60%) zusammen.