Praktikum Advanced Software Development with Modern C++
Aktuelles
-
Im
internen Bereich
sind nützliche Downloads verfügbar.
-
Die Einführungsveranstaltung findet am
Freitag, 13.04.2018, um 13-16 Uhr
in NGB 03 (Nebengebäude "Barraca Blanca") statt.
Bei Nichterscheinen wird der Praktikumsplatz neu vergeben!
-
Das
Wiki zum Praktikum
ist online.
Es enthält das Skript zum Praktikum mit vielen externen
Referenzen und alle besprochenen Codebeispiele mit ergänzenden
Kommentaren.
-
Neben den Präsenzterminen werden Sprechstunden (ohne Voranmeldung)
am Dienstag, 11-13 Uhr und 14-16 Uhr, Raum UE104
angeboten. Machen Sie von diesem Angebot unbedingt Gebrauch!
Einordnung
shared_ptr<T> get(int id) {
static map<int, weak_ptr<T>> cache;
static mutex m;
lock_guard<mutex> lg(m);
auto sp = cache[id].lock();
if (!sp) cache[id] = sp = load(id);
return sp;
}
Im Rahmen des Praktikums wird die Programmiersprache C++ ausgehend von
ihren größten Stärken untersucht:
Der maschinennahen Systemprogrammierung und Abstraktion durch formale
Konzepte in einem Turing-vollständigen Typsystem.
Nach einem Werdegang von über 25 Jahren als dominierende
Programmiersprache in Industrie und akademischer Forschung und der
gleichzeitigen Verpflichtung zur Abwärtskompatibilität ist C++
derzeit mehr denn je ein
Platz unter den Top 3 Programmiersprachen der Industrie
sicher.
Durch seine geradezu berüchtigten historische Altlasten erfordert es
aber viel Erfahrung, die Stärken von C++ zu nutzen ohne seinen
Schwächen zum Opfer zu fallen.
Hierzu wurden mit dem C++11 - Standard entscheidende und lang erwartete
Fortschritte erzielt: Ausdrucksmächtigkeit und Portierbarkeit wurden
weiter verbessert, aber gleichzeitig kann jetzt durch nur wenige neue
Spracherweiterungen die Komplexität der Syntax derart reduziert werden,
dass sie sich in vielen Fällen
von schwach getypten Sprachen wie Python kaum mehr unterscheidet.
Die Herausforderungen für Software-Entwickler verschieben sich jetzt zu
formalen und
konzeptionellen Problemstellungen, besonders im Zusammenhang
mit vergleichsweise modernen Aspekten wie Multithreading und Shared Memory
Locality.
"And remember, Beethoven wrote his first symphony in C."
-- A.P.L. Byteswap's Big Book of Tuning Tips and Rugby Songs
Inhalte
Die behandelten Themen im Praktikum sind unter anderem:
- Das Typsystem in C++11
- Funktionale Programmierung
- Konzepte der C++ Standard Template Library
- Resourcenverwaltung
- Parallel I/O
- Allokatoren
- Multi-threading Konzepte
- Container für parallele, verteilte und Echtzeit-Anwendungen
Teilnehmer
Das Praktikum richtet sich an Master- und Bachelor-Studenten der
Informatikstudiengänge.
Voraussetzung für die Teilnahme
- Stabile Grundlagenkenntnisse in C, zum Beispiel aus dem
Systempraktikum an diesem Lehrstuhl
- Erste Erfahrungen, aber ausdrücklich keine
fortgeschrittenen Kenntnisse in C++
Wir empfehlen außerdem die vorherige erfolgreiche Teilnahme an den
Vorlesungen:
- Programmierung und Modellierung
- Algorithmen und Datenstrukturen
- Rechnerarchitektur
- Rechnernetze und verteilte Systeme
- Formale Spezifikation und Verifikation
Die Aufgabenstellungen im Praktikum verlangen hohes Engagement und
Eigeninitiative von den Teilnehmern.
Konsequenterweise wird dem in der Prüfungsleistung mit 12 ECTS (Bachelor
und Master) Rechnung getragen.
Organisation
Ablauf
Der Veranstaltungszeitraum schließt das gesamte Sommersemester
ein, also einschließlich vorlesungsfreier Zeit.
-
-
Die Themen werden im ersten Teil des Praktikums im Stil eines
wöchentlichen Workshops gemeinsam formal untersucht und live
in Code erprobt.
-
Aufgabenstellungen im ersten Teil des Praktikums werden in Einzelarbeit
bearbeitet.
Zur Teilnahme am zweiten Teil und somit Bestehen des Praktikums ist
die erfolgreiche Bearbeitung der Testate Voraussetzung.
-
Abgaben werden in einer VM in einer Testapplikation geprüft.
Das VM-Image mit der Testapplikation ist für die Bearbeitung
verfügbar, Sie können Ihre Lösung also jederzeit
selbst testen.
-
-
Im zweiten Teil, der sich über die Semesterferien erstreckt, werden
freie Projektarbeiten in Einzelarbeit oder in Gruppen von zwei Studenten
unter Betreuung umgesetzt und abschließend in einer Blockveranstaltung
präsentiert.
-
Die Bewertung basiert auf der Implementierung der Projektarbeit und dem
Präsentationsvortgrag, die jeweils zur Häfte in die Benotung
eingehen.
Abgesehen von den Vortragsterminen werden aber voraussichtlich keine
Präsenztermine nach der Vorlesungszeit stattfinden und stattdessen
individuelle Betreuungstermine vereinbart.
Wichtiger Hinweis
Die zu erbringenden Leistungen in der Veranstaltung bestehen aus unbenoteten
Testaten zur Prüfungszulassung und einer Prüfung über
12 ECTS bestehend aus einer schriftlichen Ausarbeitung, Vortrag und
Diskussion des gewählten Praktikumsthemas.
Die üblicherweise wöchentlich gestellten Testate stellen das
Verständnis der Grundlagen aus dem ersten Teil des Praktikums sicher,
die eine fachliche Mindestvoraussetzung für die Umsetzung der
anspruchsvollen Projektarbeiten sind.
Anmeldung
Bitte beachten Sie:
Aufgrund der intensiven persönlichen Betreuung der Teilnehmer ist die Anzahl
der Plätze stark begrenzt.
Die Praktikumsplätze wurden über eine
Zentralanmeldung in UniWorX
vergeben.
Zeit und Ort
Die Präsenztermine finden wöchentlich Freitag, 13-16 Uhr im
NGB 03 (Nebengebäude "Barraca Blanca") statt.
Literatur und Referenzen
Bücher sind zu Semesterbeginn in der Bibliothek verfügbar.
Außerdem zu empfehlen: