Funktionen

Print[PRINT]
.  Home  .  Lehre  .  Praktika  .  Wintersemester 2016/17  .  C++ Praktikum

Praktikum Advanced Software Development with Modern C++

Praktikum im Wintersemester 2016/2017
Prof. Dr. D. Kranzlmüller,
M.Sc. T. Fuchs

Aktuelles

  • Ü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: