====== Proseminar „Effiziente Programmierung in C“ ======
===== Beschreibung =====
In diesem Proseminar geht es um die effiziente Programmierung in C im weiteren Sinne.
Dazu gehören grundlegende und weiterführende Themen der C-Programmierung - unter anderem die generelle Struktur von C-Programmen, die Speicherverwaltung, Zeiger und weitere Konzepte. Wir beschäftigen uns außerdem mit der Leistungsanalyse und dem Debugging von C-Anwendungen. Dabei sollen Informationen zu den verschiedenen Themen recherchiert werden und anhand von konkreten Beispielen dargestellt werden.
Es können auch die Ergebnisse kleiner vergleichender Untersuchungen zur Auswirkung verschiedener Konstrukte und Methoden gezeigt werden.
Beachten Sie auch unsere allgemeinen organisatorischen [[:teaching:organisatorische_hinweise:seminar_proseminar#proseminare|Hinweise zu Proseminaren]].
===== Zielgruppe =====
Das Projekt eignet sich für Studierende der Informatik in den Diplom- und Bachelorstudiengängen.
Studierende anderer Studiengänge müssen die Anrechnung mit dem jeweiligen Prüfungsausschuss klären.
Interessierte Zuhörer sind auch herzlich willkommen.
===== Videoaufzeichnung mit OBS =====
* Tutorial-Video zur Verwendung von OBS: [[https://cloud.wr.informatik.uni-hamburg.de/s/YsrifsxF4RpbA79|Video]]
* UHH-Anleitungen zur Verwendung von OBS: [[https://www.uni-hamburg.de/elearning/werkzeuge/autorenwerkzeuge/obs-studio.html|Deutsch]] [[https://www.uni-hamburg.de/elearning/werkzeuge/autorenwerkzeuge/obs-studio/bilder/obs-fiona.pdf|English]]
===== Daten der Veranstaltung =====
|| Zeit || Donnerstag 10-12||
|| Ort || Zoom 929 0952 4288 ||
|| Mailingliste || [[https://wr.informatik.uni-hamburg.de/listinfo/epc-21|EPC-21]] ||
===== Dozenten =====
* [[People:Anna Fuchs]] (Ansprechpartner)
* [[People:Jannek Squar]]
* [[People:externals:Jakob Lüttgau]]
===== Zeitplan =====
Bei einem allgemeinen Einführungstermin werden Grundlagen vermittelt und die Themen zugewiesen.
Nach der Festlegung der Themen soll der Inhalt mit dem jeweiligen Betreuer diskutiert werden.
* 08.04. 10:15 Organisatorische Einführung und Themenerklärung/-vergabe {{ :teaching:sommersemester_2021:epc-21_orga.pdf |Folien}}
* 15.04. fällt aus
* 22.04. 10:15 Einführender Vortrag ((Anna Fuchs))
* Geschichte, Einsatzgebiet
* Programmaufbau
* Funktionen, Rückgabewerte
* Kommentare, Schlüsselwörter
* Kompilieren, Ausführen, Umgebung
* Zitieren
* 29.04. fällt aus
* 06.05. fällt aus
* 20.05. fällt aus
* 27.05. Meeting 11:00am
* Abgabe bis Mo. 24.05. 11:59am
* 01. Speicherverwaltung ((Anna Fuchs)) -- Denny Herrnbrodt
* 02. Variablen ((Anna Fuchs)) -- Daniel Flat {{ :teaching:sommersemester_2021:epc-21_flat_variablen.pdf |Folien}} {{ :teaching:sommersemester_2021:epc-21_flat_variablen_aufgaben.pdf |Beispielaufgaben}}
* 03.06. Meeting 11:00am
* Abgabe bis Mo. 31.05. 11:59am
* 03. Zeiger ((Anna Fuchs)) -- Johannes Bräuning {{ :teaching:sommersemester_2021:03_epc-21_bräuning_zeiger.pdf |Folien}}
* 04. Datenstrukturen ((Jakob Lüttgau)) -- Luis Moser
* 05. Zeigerarithmetik, Funktionszeiger ((Jannek Squar)) -- Tim Helmke
* 10.06. Meeting 11:00am
* Abgabe bis Mo. 07.06. 11:59am
* 06. Kompilieren und Linken ((Jannek Squar)) -- Joshua Lowe {{ :teaching:sommersemester_2021:epc21_06_lowe_kompilieren-und-linken.pdf |Folien}} {{ :teaching:sommersemester_2021:Beispielaufgaben-KompilierenUndLinken.pdf |Beispielaufgaben}}
* 07. Bibliotheken, Header, Modularität ((Jannek Squar)) -- Julia Ludwig {{ :teaching:sommersemester_2021:epc21_07_ludwig_libs.pdf |Folien}}
* 08. Compiler Optimierungen ((Jannek Squar)) -- Timo Bemmer {{ :teaching:sommersemester_2021:08-epc21-bemmer-compiler-optimierungen.pdf |Folien}}
* 17.06. Meeting 11:00am
* Abgabe bis Mo. 14.06. 11:59am
* 09. Debugging und gdb ((Jannek Squar)) -- Michael Römer
* 10. Valgrind ((Anna Fuchs)) -- Maximilian Hartz {{ :teaching:sommersemester_2021:epc21_10_hartz_valgrind.pdf |Folien}}
* 11. Fehlerbehandlung ((Anna Fuchs)) -- Steffen Schulze
* 24.06. Meeting 11:00am
* Abgabe bis Mo. 21.06. 11:59am
* 12. Threads ((Jannek Squar)) -- Christian Widera {{ :teaching:sommersemester_2021:12-epc21_widera_threads_slides.pdf |Folien}}
* 13. OpenMP ((Jannek Squar)) -- Niklas Beck {{ :teaching:sommersemester_2021:epc21_13_beck_openmp.pdf |Folien}}
* 14. Präprozessor ((Jakob Lüttgau)) -- Erik Brammann
* 01.07. Meeting 11:00am
* Abgabe bis Mo. 28.06. 11:59am
* 15. glibc ((Jakob Lüttgau)) -- Jan-Luca Kühlhorn
* 16. C-Standards ((Jakob Lüttgau)) -- Niels Birker
* 17. C++ ((Jakob Lüttgau)) -- Jannes Noack {{ :teaching:sommersemester_2021:epc-21_noack_cpp.pdf |Folien}}
* 08.07. Meeting 11:00am
* Abgabe bis Mo. 05.07. 11:59am
* 18. I/O ((Anna Fuchs)) -- Niklas Kreikenbohm
* 19. Undefiniertes Verhalten ((Anna Fuchs)) -- Konstanze Reupert {{ :teaching:sommersemester_2021:19-epc21-reupert-undefiniertes-verhalten.pdf |Folien}}
* 20. Kernel C ((Anna Fuchs)) -- Cedric Robert {{ :teaching:sommersemester_2021:20-epc21_robert_kernel_c.pdf |Folien}}
===== Literaturhinweise =====
* https://gforge.inria.fr/frs/download.php/file/37813/ModernC.pdf
* https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard
* https://en.cppreference.com/w/c
* http://www.cplusplus.com/reference/clibrary/ (auf den Unterschied C/C++ achten)