Programmierpraktikum: Datensysteme WiSe2024/25
(PR, 41136 Programmierpraktikum: Datensysteme)

Das Programmierpraktikum Datensysteme ist ein 6 ECTS Kurs der zum Ziel hat Methoden der Softwaretechnik praktisch anhand einer komplexen Aufgabenstellung zu erproben, Teamerfahrungen zu sammeln, und Methoden der effizienten Implementierung ausgewählter Komponenten von Datenbanksystemen kennen zu lernen. Zu Beginn jedes Semesters wird ein neues Projekt (oder mehrere) im Kontext der Implementierung von Datenbanksystemen (z.B., Indexstrukturen, Operatoren wie Joins oder Aggregationen, Bufferpool mit Seitenverdrängung) definiert. Die Studierenden erhalten die API dieser Komponente sowie ausgewählte Benchmarks, und die Aufgabe ist es in selbstorganisierten Teams von 4 Personen korrekte Implementierungen in C, C++, oder Java zu erstellen. Neben der Protypenentwicklung sind auch der systematische Umgang mit Versionsverwaltung, testgetriebener Entwicklung, Entwurfsdokumentation, sowie Laufzeitexperimenten und -verbesserungen von großer Bedeutung. Gleichzeitig erlaubt dieses Programmierpraktikum den Umgang mit vertiefenden Methoden der Gebiete Informationssysteme und Datenanalyse sowie Algorithmen und Datenstrukturen. Der Schwerpunkt liegt jedoch auf dem Erlernen des problemorientieren Einsatzes von Programmierkenntnissen zur Lösung konkreter Fragestellungen, nicht die ganzheitliche funktionale Betrachtung der Implementierung von Datenbanksystemen.


Inhalt

Das Programmierpraktikum hat eine Gesamtkapazität von 76 Studierenden, wobei zwei Instanzen mit leicht unterschiedlicher thematischer Ausrichtung durch die Fachgebiete DAMS, DEEM, und D2IP angeboten werden (mit gemeinsamen Kickoff und Abschlusspräsentationen, ansonsten alternierend; Montag 16-17.30 Uhr im H 0111). PPDS ist unbenotet, jedoch werden die folgende Prüfungselemente zur Evaluierung eines positiven Abschlusses einbezogen:

  • Projektimplementierung (Source Code des Projekts) [45%]
  • Tests fuer Komponenten und Funktionen (Source Code der Tests) [10%]
  • Laufzeitexperimente (Erreichung Performance-Ziel) [15%]
  • Dokumentation (Design Dokument bis 5 Seiten) [15%]
  • Ergebnispräsentation (10min Vortrag) [15%]


Thema: Disk-based B-Tree

Kapazität: 48/76 Studierende (9 Teams a 4 Studierende)

API C/C++: project_c.zip (last update: Oct 27)

API Java: project_java.zip (last update: Oct 27)

Task Description: Die Aufgabe ist es einen persistenten (d.h. disk-basierten) B-Baum, zu implementieren der die bereitgestellten Validierungstests besteht und ein gegebenes Performance-Ziel erreicht. Die API (open, insert, delete, get, getNext, close), Validierungstests, und Performance Benchmarks werden sowohl in C als auch Java bereitgestellt und jedes Team kann eine präferierte Programmiersprache (z.B., C, C++, Java, Rust) verwenden. Parallel zur eigentlichen Projektarbeit gibt es begleitende Vorlesungen alle 2 Wochen zu generellen Fragebeantwortung sowie Themen wie Versionsverwaltung, testgetriebener Entwicklung, Auffrischung von Indexstrukturen, Buffer-Pool-Verwaltung, Transaktionen, Entwurfsdokumentation, sowie Laufzeitexperimenten und -verbesserungen.

Vorlesungen: After the instance selection ended, we now have 3 students assigned to the D2IP instance, 2 students to DEEM, and 1 student to DAMS. Given this low number of students, we will not be doing the DAMS background lectures, but have one-on-one discussions on demand (beyond the publicly available resources from previous semesters). I'll also be returning the room H0111, except for the final project presentations Feb 03, 2025 - see you there.

  • 14.10.2024, 16 Uhr c.t.: Kickoff and Introduction [pdf, pptx, mp4]
  • 28.10.2024, 16 Uhr c.t.: Background Index Structures
  • 11.11.2024, 16 Uhr c.t.: Background Buffer Pool
  • 28.11.2024, 16 Uhr c.t.: Background Transaction Processing
  • 09.12.2024, 16 Uhr c.t.: Experiments and Reproducibility
  • 03.02.2025, 16 Uhr c.t.: Project Presentations all Teams


Organization

  • Lecturer: Univ.-Prof. Dr.-Ing. Matthias Boehm, DAMS
  • Teaching Assistant: Christina Dionysio and Ramon Schöndorf , DAMS
  • Project submission: Jan 27, 2025
  • Project presentations: Feb 03, 2025
  • Grading: passed ≥ 50% points