Themenübersicht

Diese Übersicht ist noch nicht final, soll aber als grobe Orientierungshilfe dienen. Wir werden im Kurs ggf. in einer anderen Reihenfolge vorgehen. Der Fokus liegt insb. auf den „einfacheren“ Themen, d. h. die schwierigeren Themen werden wir hinten anstellen. Eine alte Druckversion (PDF) der Themenübersicht findest du hier (aktuellste Version ist dann im Skript).

  1. Grundlagen der Programmierung
    1. Grundlegende Begrifflichkeiten
    2. Primitive Datentypen und Typecasting
    3. Exkurs: Zahlensysteme
    4. Operatoren, Ausdrücke und Auswertungsbäume
    5. Kontrollstrukturen (if, while, for) und Programmverständnis
    6. Referenzdatentypen (Arrays, String, ...)

  2. Syntax
    1. Kontextfreie Grammatiken (insb. reguläre Ausdrücke)
    2. Syntaxbäume
    3. Kontrollflussdiagramme

  3. Rekursion
    1. Iteration vs. Rekursion
    2. Endrekursion
    3. (Mehr) Rekursion

  4. Objektorientierte Programmierung
    1. Grundlagen der Objektorientierung
      • Klasse, Objekte, Membervariablen, Konstruktoren, statische/dynamische Methoden, Sichtbarkeiten
      • Schlüsselwörter super und this
      • Verschattung von Objektvariablen
      • Call-by-Value und Call-by-Reference
      • Vererbung, Klasse Object
      • Überladen und Überschreiben von Objektmethoden/Konstruktoren
      • Abstrakte Klassen und Interfaces
      • Schlüsselwort final
    2. Generische Klassen (Generics / Typparameter)
    3. Objektorientierte Programmieraufgaben
    4. Collections (insb. Listen)

  5. Polymorphie (17.)
    • Statischer und dynamischer Typ
    • Casting
    • Bestimmung der aufgerufenen Methode

  6. Algorithmen (18.)
    • Sortieren: bspw. Insertionsort, Mergesort, Bubblesort, Quicksort
    • Suchen: Binäre Suche

  7. Threads (19.)
    • Threadzustände (Theorie) und Methoden (start, run, yield, join, interrupt, sleep)
    • Implementierungsmöglichkeiten (Praxis)
    • Synchronisierung (Locks, synchronized)
    • Consumer-Producer-Problem (wait, notify, notifyAll)