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.