Review

Hier ist ein Vorschlag für die Reihenfolge, in der Sie die Inhalte der Vorlesung sich noch einmal ansehen sollten.  Dies weicht etwas ab von der Reihenfolge, die wir in der Vorlesung hatten.

Sehen Sie sich auch Fragen aus alten Prüfungen und den Übungsaufgaben an.  Zudem sehen Sie sich die Materialien und das Stichwortverzeichnis an.


SE1

  • Programmieren (Haskell)
    • einfaches Haskell
      • einfache Datentypen
      • Konstanten
      • einfache Ausdrücke
      • einfache Variablendefinitionen
      • if then else
      • Funtionen und Operatoren
      • Operatorenpräzedenz
      • Überladung von einfachen Operatoren
      • einfache Funktionsdefinitionen
      • Funktionstypen und deren Notation
      • partielle Funktionsanwendung und Currying
      • Rekursion und Rekursionsformen
      • Gleichungsstil
      • BEISPIEL: fib
      • BEISPIEL: ggt
      • BEISPIEL: Abzahlung
      • BEISPIEL: if-then-else
      • main und Kompilierung
    • Verbundtypen
    • Vertiefung
      • lexical scoping
      • call-by-need
      • Bezeichnerumgebung
      • lambda-Abstraktion
      • Currying
      • Äquivalenz von lambda und Funktionsdefinitionen
      • Typendeklarationen
      • let / where / case Notation
    • Datentypen
      • benutzerdefinierte Datentypen
      • Summentypen
      • Aufzählungstypen
      • Bäume
      • Syntaxbäume
      • BEISPIEL: Taschenrechner
      • unendliche Listen
      • Module
      • Datenstrukturen als Modulersatz
      • BEISPIEL: PQ Sort
      • Poymorphie
      • Typinferenz
      • Funktionen höherer Ordnung
      • wichtige Funktionen höherer Ordnung
      • BEISPIEL: MapReduce
    • Unterschied Funktional / Prozedural / OOP
  • Programmieren (Java)
    • prozedural
      • boolean, Zahlen, Konstanten
      • arithmetische Ausdrücke
      • Präzedenz
      • Variablendefinition
      • BEISPIEL: einfache Rechnungen
      • Zuweisungen
      • if / case
      • while / for / do / break / continue
      • BEISPIEL: Bottles
      • Blockstruktur und Scoping
      • Shadowing
      • Zeichenketten
      • Operationen auf Zeichenketten, Bibliotheken
      • Prozeduren und Funktionen
      • BEISPIEL: ggt
      • BEISPIEL: Abzahlung
      • Rekursion
      • BEISPIEL: Fib (rekursiv)
      • BEISPIEL: Fib (Schleife)
      • call-by-value
      • BEISPIEL: if_then_else as function
      • Felder
      • BEISPIEL: Collatz
      • sequenzielle und parallele Updates
      • BEISPIEL: rule110
      • Syntaxdiagramme
      • Railroad Diagrams
      • kontextfreie Grammatik (informell)
      • cast-Notation
      • automatische Casts
      • Prozedurbaum
    • Java Bibliotheken
      • Bibliotheksstruktur und Pakete
      • new
      • Aufruf von Methoden
      • Zugriff auf Instanzvariablen
      • BEISPIEL: ...
    • einfache Datenstrukturen
    • Spezifikation und Testen
      • Spezifikation von Prozedureigenschaften
      • assert
      • Unit Testing
      • (Annotationsbeweise: siehe unten)
    • objektbasiert
      • Definition von Methoden
      • Konstruktoren
      • this
      • interface / implements
      • objektbasierte Programmierung
      • UML Notation für Klassen und Interfaces
      • BEISPIEL: List Klasse
      • BEISPIEL: Binary Tree Klasse
    • objektorientiert
      • extends und Vererbung
      • objektorientierte Programmierung
      • upcast / downcast
      • UML Notation für Vererbung
      • einfache Prinzipien von OOD
      • BEISPIEL: MyComponent und paint()
    • fortgeschrittene Themen
    • weitere Bibliotheken
      • Collections 
      • Streams / I/O Bibliotheken
  • Systemfragen
  • Design
    • Softwareentwicklungsprozesse
    • Aufteilung von Kosten
    • Anforderungen
    • Systemumgebung
    • UML Notation
    • Kapselung
    • Klassifikation
  • Algorithmen und Datenstrukturen
    • Suchen
      • linear search
      • binary search
    • Sortieren
      • Bubblesort
      • Selection Sort
      • Insertion Sort
      • Quicksort
      • PQ Sort / Heapsort
      • Mergesort
    • Datenstrukturen
      • Linked List
      • Binary Tree
      • Heap
      • Hash Table
      • Graphen und Geflechte
  • Komplexität
    • Aufwandsmessung mit Instrumentierung
    • O(.) Notation
    • Schätzung von Schritten
  • Testen, Verifikation, Theorie
    • Testen und Verifikation
    • unit testing
    • Programmzustände
    • formale Beweise
    • Verifikation durch Induktion (Haskell)
    • Terminierungsbeweise (Haskell)
    • Beweise mit assert
    • kontextfreie Grammatik (formal)
    • Ableitbarkeit
    • Mehrdeutigkeit
    • Ableitungsbaum  
Comments