Praktikum Advanced Software Development with Modern C++
Aktuelles
-
Die Abgabefrist für die Projektdokumentationen ist am
25. April, 23:59 Uhr per Mail an Tobias Fuchs.
Die Abschlussvorträge der Praktikumsprojekte finden
am 2. Mai. von 10:00 bis 18:00 Uhr im Besprechungsraum statt.
-
Übungsmaterial und Zusammenfassungen der Praktikumstermine
werden
im hier
verlinkten internen Bereich veröffentlicht.
Das Passwort wurde in einer Mail via Uniworx an alle Teilnehmer
versendet.
-
Die Einführungsveranstaltung findet am Freitag, 21.10.2016,
um 13-16 Uhr im Besprechungsraum des Lehrstuhls (Raum EU.102)
statt.
Einen Laptop mitzubringen lohnt sich, ist aber nicht zwingend notwendig.
-
Bitte beachten Sie die
Hinweise zur Prüfungsleistung!
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.
Dank eines historischen Werdegangs 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
Übungsmaterial
Übungsmaterial und Zusammenfassungen der Praktikumstermine
werden
im hier
verlinkten internen Bereich
veröffentlicht.
Das Passwort wurde in einer Mail via Uniworx an alle Teilnehmer
versendet.
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 Wintersemester 16/17
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 Veranstaltung besteht nicht aus zwei unabhängigen
Prüfungsleistungen zu je 6 ECTS, sondern aus Testaten und einer
Prüfung (Vortrag und Diskussion) über gemeinsam 12 ECTS,
vergleichbar mit dem Rechnernetze-Praktikum.
Für die gesamte Prüfungsleistung ist also die erfolgreiche
Teilnahme an beiden Praktikumsteilen Voraussetzung, auch wenn Sie
nicht mehr als 6 ECTS benötigen.
Grund hierfür ist, dass die Grundlagen aus dem ersten Teil des
Praktikums 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 werden über ein
Bewerbungsverfahren in UniWorX
vergeben.
Falls Sie noch keinen UniWorX-Account haben, registrieren Sie sich
möglichst frühzeitig.
Zeit und Ort
Die Präsenztermine finden wöchentlich Freitag, 13-16 Uhr im
Besprechungsraum des Lehrstuhls (Raum EU.102) statt.
Die erste Vorbesprechung findet am 21. Oktober 2016, um 13 Uhr c.t. statt.
Bitte kommen Sie unbedingt zu diesem Termin, wenn Sie am Praktikum teilnehmen wollen!
Literatur und Referenzen
Bücher sind zu Semesterbeginn in der Bibliothek verfügbar.
Außerdem zu empfehlen: