Programmieren 2 SS'24
Vorlesung mit großer und kleiner Übung
Prof. Dr.-Ing. Martin Eisemann
Hörerkreis: Bachelor
Kontakt: prog2@cg.cs.tu-bs.de
Modul: INF-PRS-44
Vst.Nr.: 4210001, 4210002
Aktuelles
Die Prüfung am 17.02.2025, 13-15 Uhr in UP 3.007 (unter dem Audimax) wird eine Präsenzklausur sein, kein Take-Home-Examen wie in den letzten Prüfungen. Die Prüfungsart wird ansonsten ähnlich sein.
Da Prof. Eisemann im Sommersemester 2025 voraussichtlich im Forschungssemester sein wird, wird die Veranstaltung übergangsweise von Dr. Sören Tempel gehalten.
Bei Inkonsistenzen mit Stud.IP haben die Informationen auf dieser Webseite Vorrang.
Beschreibung
Nach Abschluss dieses Moduls besitzen die Studierenden vertiefte Kenntnisse der imperativen und objektorientierten Programmierung. Sie sind in der Lage, mittelgroße Programme selbstständig zu entwickeln und dabei Aspekte der strukturierten Programmierung zu berücksichtigen.
Inhalt
- Vertiefung der objektorientierten Programmierung anhand der Sprache C++
- Programmierung dynamischer und rekursiver Datenstrukturen
- Grundlagen der Parallelprogrammierung
- Grundlagen der Grafikprogrammierung
- Clean Code
- Datensammlungen und Collections
- Generizität
- Funktionen höherer Ordnung
- Speichermanagement
- Grundlagen der funktionalen Programmierung
Ort und Zeit
LIVE Fragestunde.
Der Kurs selbst findet als Courseware in Stud.IP statt.
Wöchentlich Dienstags, 08:00–09:30 Uhr, beginnend am 09.04.2024
Hörsaal: SN 19.1
Wöchentlich Freitags, 11:30–13:00 Uhr, beginnend am 12.04.2024
Hörsaal: UP 3.007
Wöchentlich, beginnend in der Woche vom 15.-19.04.2024
WiSe 17.02.2025, 13-15 Uhr in UP 3.007
Anmeldung
(09.04. 19:00 Uhr bis 14.04. 19:00 Uhr)
- Loggen Sie sich ein Mal mit ihrer y-Nummer auf unserem Instituts-Git Server ein (nicht das TU-GitLab oder GitHub), um ihren Account zu aktivieren.
Falls Sie noch einen alten (nicht y-Nummer) Account besitzen, können Sie diesen weiterverwenden (wählen Sie beim Login "Lokal" als Authentifizierungsquelle aus). - Melden Sie sich hier auf unserer Webseite unter Teaching > Course Enrollment für die Vorlesung an.
Diese Anmeldung benötigen wir für die Organisation der Veranstaltung (u.a. zur Übermittlung der Ergebnisse an die Prüfungsämter).
Beachten Sie, dass diese Anmeldung nicht die Anmeldung beim Prüfungsamt bzw. per TUconnect ersetzt. - Tragen Sie sich in einer Stud.IP-Gruppe Ihrer Wahl ein, um einen Platz in der dazugehörigen kleinen Übung zu reservieren.
Tragen Sie sich in die Gruppe "Warteliste" ein, falls es keinen Platz mehr in den vorgegebenen Gruppen gibt. Weitere Informationen folgen in dem Fall per Stud.IP-Ankündigung.
Vorlesungen
Die Vorlesung wird als Courseware in Stud.IP durchgeführt, d.h. Sie müssen das bereitgestellte Video/Material vor der jeweiligen Veranstaltung bearbeiten. Die Vorlesungszeit kann für Fragen und vertiefende Thematiken genutzt werden, die nicht in der Courseware beantwortet werden konnten.
Die Vorlesungsfolien finden sie hier. Beachten Sie, dass die Folien nicht ausreichend sind für eine Vorbereitung auf die Prüfung und nur einen Bruchteil des Inhaltes der Courseware abbilden.
Große Übungen
- Besprechung der Musterlösung des letzten Übungsblatts.
- Vorstellung von Hinweisen/Tipps und Klärung eurer Fragen zum neuen Übungsblatt.
In der ersten großen Übung gibt es eine kurze Einführung und ein paar allgemeine Infos zum Ablauf.
Kleine Übungen
Erste Woche (15.-19.04.2024)
- Verpflichtende Teilnahme für die finale Gruppeneinteilung.
Sie müssen bereits in einer der entsprechenden Gruppen in Stud.IP eingetragen sein.
Es besteht die Möglichkeit die Gruppe (innerhalb des Übungstermins, also beim selben Tutor) zu wechseln.
- Zugriff auf die Abgabe-Repos auf unserem Git Server.
- Hilfe bei Setup-Problemen.
Zweite Woche
- Hilfe bei Setup-Problemen.
Folgende Wochen
- Die Tutoren der Übung wählen zufällige Personen für die Präsentation der abgegebenen Lösungen. Können diese nicht erklären werden, wird die Aufgabe mit 0 Punkten bewertet.
Die Präsentationen in den kl. Übungen sind verpflichtender Teil der Studienleistung. Bei Abwesenheit wird das entsprechende Aufgabenblatt mit 0 Punkten bewertet.
Sollten sich im Laufe des Semesters terminliche Probleme mit Ihrem gewählten kl. Übungstermin ergeben, sodass Sie Ihre Abgaben nicht mehr präsentieren könnten, melden Sie sich frühzeitig bei uns, um einen möglichen Gruppenwechsel zu besprechen!
Um die Übungen freiwillig (z.B. als Wiederholung) zu bearbeiten, müssen Sie in keiner Gruppe eingetragen sein.
Aufgabenübersicht
Die Aufgabenblätter und Code-Vorgaben (ZIP) werden wöchentlich Dienstags nach der Vorlesung unter Dateien in Stud.IP hochgeladen.
Die Abgabefrist steht jeweils auf den Aufgabenblättern, wobei die Bearbeitungszeit i.d.R. eine Woche beträgt.
Die Präsentation eurer Lösungen erfolgt in der Woche nach der Abgabe.
Abgabe | Präsentation
Aufgabenblatt & Themen
23.04. | 29.04.–10.05.
Blatt 1
IDE Setup, Hello World, Debugging
30.04. | 13.05.–17.05.
Blatt 2
Datentypen, Kontrollstrukturen, Funktionen, Mehrere Dateien
14.05. | 27.05.–31.05.
Blatt 3
CMake, Klassen, Clean Code
28.05. | 03.06.–07.06.
Blatt 4
Smart Pointer, Polymorphismus, Exceptions, Operatorüberladung
04.06. 06.06. | 10.06.–14.06.
Blatt 5
Operatorüberladung als *friend*, Template-Funktionen und -Klassen (Generizität)
11.06. | 17.06.–21.06.
Blatt 6
Range-based for-loop, Lambdas, std::pair
18.06. | 24.06.–28.06.
Blatt 7
std::array, std::set, std::priority_queue
25.06. | 01.07.–05.07.
02.07. | 08.07.–12.07.
Blatt 9
Nebenläufigkeit: Threads, Atomics, Mutex
Weiterführende Links
Sehr detaillierte Einführung in C++
C++ Referenz — für Details zu spezifischen Konzepten/Funktionen/Klassen/...
ISO Standardisierungskommittee
Programmiertipps von Bjarne Stroustrup (Erfinder von C++) und Herb Sutter (Microsoft)
Browser-Tool zur Analyse von modernem C++ Code
Browser-Tool zur Visualisierung der Speicherverwaltung in C++
Prüfung
Prüfungszeitraum siehe unter Ort und Zeit.
Eventuelle Änderungen werden in der Vorlesung und auf dieser Webseite rechtzeitig bekanntgegeben.
- Prüfungsform: Klausur in Präsenz
- Scheinerwerb durch Bestehen der Prüfung (mind. 50% der Punkte, ggf. Ausnahmen durch Anhang 5 der APO)
- Voraussetzung zum Modulabschluss: mindestens 50% der Punkte aus den Übungen erreicht.
- Studierende müssen sich beim Prüfungsamt anmelden!
Eine Probeprüfung finden Sie hier.
Inhalte
Die Fragen werden mehrheitlich kprim Fragen sein (d.h. es gibt pro Frage einen Aufgabentext und 4 Aussagen dazu, die als richtig oder falsch gekennzeichnet werden müssen. Es gibt 1 Punkt, wenn alle Aussagen korrekt markiert wurden. 0,5 Punkte, wenn 3 Aussagen korrekt markiert wurden, 0 Punkte bei 0-2 richtig markierten Aussagen. Es gibt keine negativen Punkte, es empfiehlt sich also notfalls zu raten. Ein Beispiel ist weiter unten gegeben.)
Wir behalten uns vor auch andere Fragetypen zu verwenden, bspw. Single/Multiple-Choice oder Lückentexte.
Hilfsmittel
Keine ausser einem Stift.
Anmeldung und weitere Informationen
Eine Anmeldung über das jeweilige Prüfungsamt ist zwingend erforderlich!
kprim Beispiel
Hier sei einmal ein Beispiel gegeben wie eine kprim Aufgabe aussehen könnte.
Gegeben folgender Source Code: [Hier stünde ein entsprechender Source Code]
Prüfen Sie die folgenden Aussagen auf ihre Korrektheit.
- Der Rückgabetyp der Funktion sollte double und nicht int sein, da sonst eine implizite Konvertierung stattfindet.
richtig/falsch
- In Zeile 5 würde der Compiler eine Fehlermeldung werfen, weil eine nicht initialisierte Variable verwendet wird.
richtig/falsch
- Der Code in Zeile 10 würde effizienter, wenn dort folgender Code stehen würde:
richtig/falsch
- Statt einer verketteten Liste wäre ein Array besser geeignet in obigem Code, da Einfüge und Löschoperationen sehr häufig ausgeführt werden.
richtig/falsch
Bitte beachten Sie, bei einer kprim Aufgabe können auch alle Aussagen richtig, oder alle falsch sein!
Ergänzungsprüfung
Falls Sie eine mündliche Ergänzungsprüfung benötigen, weil Sie in ihrem letztmöglichen regulären Versuch die Prüfung nicht bestanden haben, so senden Sie bitte umgehend nach Erhalt der Note (also wenn diese offiziell beim Prüfungsamt eingetragen wurde) eine Email mit der Bitte um mündlicheErgänzungsprüfung an prog2@cg.cs.tu-bs.de unter Angabe ihres vollen Namens, Matrikelnummer, TU Emailadresse und Studiengang.
Die mündlichen Ergänzungsprüfungen finden in der Regel gesammelt jeweils 1x im Semester statt. Ein Termin wird ihnen rechtzeitig vorher mitgeteilt.