Programmieren 2 SS'23
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
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 18.04.
Hörsaal: SN 19.1
Wöchentlich Freitags, 11:30–13:00 Uhr, beginnend am 21.04.
Hörsaal: SN 19.1
Wöchentlich, beginnend in der Woche vom 24.-28.04.
SoSe 25.08.2023, 14-16 Uhr || WiSe 26.02.2024, 13-15 Uhr
Anmeldung
(18.04. 19:00 Uhr bis 28.04. 19:00 Uhr)
- Tragen Sie sich in einer Stud.IP-Gruppe Ihrer Wahl ein, um einen Platz in der dazugehörigen kleinen Übung zu erhalten.
- Loggen Sie sich mit ihrer Y-Nummer auf unserem Instituts-Git Server ein — nicht TU-GitLab oder GitHub.
Falls Sie schon einen Account besitzen (nicht Y-Nummer), wählen Sie beim Login "Lokal" als Authentifizierungsquelle aus. - Melden Sie sich hier auf unserer Webseite unter Teaching > Course Enrollment 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 ersetzt.
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 und Tipps zum neuen Übungsblatt.
In der ersten großen Übung gibt es eine kurze Einführung und ein paar allgemeine Infos zur Gruppeneinteilung und dem weiteren Ablauf.
Kleine Übungen
Erste Woche (24.-28.04.)
- Finale Gruppeneinteilung (Teilnahme verpflichtend!). 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 Abgabe mit 0 Punkten bewertet.
Die Präsentationen in den kl. Übungen sind verpflichtender Teil der Studienleistung. Bei Abwesenheit wird die entsprechende Abgabe 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 Übungswechsel zu besprechen!
Um die Übungen freiwillig zu bearbeiten, müssen Sie in keiner Gruppe eingetragen sein.
Aufgabenübersicht
Die Aufgabenblätter (PDF) und Code-Vorgaben (ZIP) werden Mittwochs unter Dateien in Stud.IP hochgeladen.
Die Bearbeitungszeit läuft jeweils bis zum Mittwoch der darauffolgenden Woche.
Blatt 1
IDE Setup, Hello World, Debugging
Abgabe: 03.05.
Präsentation: 08.05.–12.05.
Blatt 2
Datentypen, Kontrollstrukturen, Funktionen, Mehrere Dateien
Abgabe: 10.05.
Präsentation: 22.05.–26.05.
Blatt 3
CMake, Klassen, Clean Code
Abgabe: 24.05.
Präsentation: 05.06.–09.06.
Blatt 4
Smart Pointer, Polymorphismus, Exceptions, Operatorüberladung
Abgabe: 07.06.
Präsentation: 12.06.–16.06.
Blatt 5
Operatorüberladung als *friend*, Template-Funktionen und -Klassen (Generizität)
Abgabe: 14.06.
Präsentation: 19.06.–23.06.
Blatt 6
Range-based for-loop, Lambdas, std::pair
Abgabe: 21.06.
Präsentation: 26.06.–30.06.
Blatt 7
std::array, std::set, std::priority_queue
Abgabe: 28.06.
Präsentation: 03.07.–07.07.
Blatt 8
Abgabe: 05.07.
Präsentation: 10.07.–14.07.
Blatt 9
Nebenläufigkeit: Threads, Atomics, Mutex
Abgabe: 12.07.
Präsentation: 17.07.–21.07.
Prüfung
Prüfungszeitraum siehe unter Ort und Zeit.
Eventuelle Änderungen werden in der Vorlesung und auf dieser Webseite rechtzeitig bekanntgegeben.
- Prüfungsform: (Klausurähnliche) Hausarbeit mit EvaExam
- 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.
Unten stehend sehen Sie den Notenschlüssel der letzten Prüfung.
Prüfungsdetails
- Prüfungszeitraum siehe Ort und Zeit. Zugang ist ab Beginn für 15 Minuten möglich.
- Zur Teilnahme benötigen Sie eine TAN und einen Link zum EvaExam System, welche Ihnen ca. 4 Tage vor der Prüfung per Email zugeschickt werden. Sollten Sie 3 Tage vorher noch keine TAN erhalten haben, melden Sie sich bitte umgehend mit folgenden Angaben [Vor- und Nachname, Matrikelnummer, Studiengang, BA oder MA, TU Emailadresse] unter prog2@cg.cs.tu-bs.de. Sie bekommen dann eine neue TAN.
- Während der Prüfung steht Ihnen unter https://tu-braunschweig.webex.com/meet/m.eisemann ein Webex Raum für Fragen zur Verfügung. Bitte loggen Sie sich dort nur ein, wenn akute Fragen bestehen, um die Übersicht zu bewahren.
- Nach Beendigung der Prüfung müssen Sie noch am gleichen Tag die Eigenständigkeitserklärung in denUpload-Ordner hochladen. Benennen Sie die Datei bitte unbedingt im folgenden Format Eigenstaendigkeitserklaerung_Programmieren2_Matrikelnummer.pdf
(bzw. .png oder .jpg, falls Sie kein PDF erstellen können). Die Abgabe hat am Tag der Prüfung zu erfolgen, danach wird der Link ungültig und die Prüfung gilt als nicht bestanden, falls die Erklärung nicht vorliegt.
Bitte beachten Sie: Sollten Sie eine TAN erhalten haben, sich aber von der Prüfung abgemeldet haben, so dürfen Sie nicht mittels dieser TAN an der Prüfung teilnehmen!
Technische Voraussetzungen und Rahmenbedingungen
Wir empfehlen die Prüfung an einem PC durchzuführen und nicht am Handy oder Tablet!
Beachten Sie, dass die Verwendung der Browsernavigation (Vor/Zurück/Aktualisieren) während der Prüfung NICHT verwendet werden sollte und zu einem Abbruch der Prüfung führen kann. Ebenso natürlich ein Schließen des Browsers.
Eine einmalig begonnene Prüfung kann nicht erneut begonnen werden. Loggen Sie sich also nicht aus während der Prüfung!
Bei technischen Problemen haben Sie als Prüfling die Nachweispflicht, dass etwas nicht wie erwartet funktioniert hat (bspw. über Screenshots und ähnliches).
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
Da es sich um eine (klausurähnliche) Hausarbeit handelt, sind Ihnen Hilfsmittel (Internet, Bücher, Aufzeichnungen, etc.) erlaubt. Es ist jedoch in jedem Falle untersagt, die Hilfe dritter Personen in Anspruch zu nehmen oder sich mit anderen Personen auszutauschen, dazu zählen auch KI ChatBots.
Anmeldung und weitere Informationen
Eine Anmeldung über das jeweilige Prüfungsamt ist zwingend erforderlich! Erst dann bekommen Sie kurz vor der Prüfung weitere Zugangsinformationen zugeschickt. (Da persönliche TAN Nummern verschickt werden müssen, erfolgt die Versendung erst wenige Tage vor der Prüfung, leider ist dies nicht anders möglich.)
Bitte beachten Sie folgenden Passus, der auch in der online Prüfung bzw. der Einladungsemail angezeigt werden sollte:
„Mit dem Öffnen der Prüfungsaufgaben bestätigen Sie, dass Sie sich geistig und körperlich in der Lage befinden, die Prüfung abzulegen (d.h. prüfungsfähig sind).
Mit dem Beenden der Prüfung und dem Abschicken bzw. Hochladen des Prüfungsbogens bestätigen Sie, dass Sie die oben bezeichnete Prüfung selbstständig und ohne unzulässige fremde Hilfe sowie nur mit den von der Lehrperson zuvor bekannt gegebenen zulässigen Hilfsmitteln bearbeitet haben.
Sie bestätigen, dass Ihnen bewusst ist, dass der Verstoß gegen prüfungsrechtliche Regelungen über die Täuschung bei der Erbringung von Prüfungsleistungen nach §11 Abs. 4 APO als Täuschungsversuch gewertet wird und damit zum Nichtbestehen der Prüfung führt. In besonders schweren Fällen z. B. bei Plagiaten, Verwendung nicht zugelassener elektronischer Hilfsmittel, auch zur Kommunikation während der Prüfung, bei organisiertem Zusammenwirken mehrerer Personen kann der Prüfungsausschuss zusätzlich das endgültigen Nichtbestehen der Prüfung und damit das Scheitern im Studiengang feststellen."
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.