teaching:sommersemester_2021:effiziente_programmierung_in_c

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 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.

Daten der Veranstaltung

Zeit Donnerstag 10-12
Ort Zoom 929 0952 4288
Mailingliste EPC-21

Dozenten

Themen

Themenliste wird zum Semesterbeginn aktualisiert. Es können aber auch eigene interessante Themen vorgeschlagen werden

  1. Speicherverwaltung
    • Heap und Stack
    • Allokieren und freigeben
  2. Variaben
    • Deklarationen, Definitionen, Initialisierung
    • Lokal, global, statisch
    • Basis-Datentypen
    • Typkonvertierung
    • printf
  3. Zeiger
    • Mehrfachpointer
    • Call by reference
    • Call by value
  4. Datenstrukturen
    • Arrays
    • n-dim Matritzen
    • Structs
    • (Strings)
  5. C-Standards
    • C99, C11, C17/18, C2x(23)
  6. Fehlerbehandlung
    1. Rückgabewerte
    2. goto
  7. Kompilieren und Linken
  8. Compileroptimierungen
  9. glibc
  10. Zeigerarithmetik, Funktionszeiger
  11. Debugging und gdb
  12. Valgrind
  13. Präprozessor
  14. Threads
  15. OpenMP
  16. Bibliotheken, Header, Modularität
  17. I/O
    • Nicht prinft, sondern “richtige” I/O
    • Failsafe I/O?
  18. Undefiniertes Verhalten
  19. C++
  20. Kernel C
    • Einschränkungen, Besonderheiten
    • Speicher
    • Userspace vs. Kernelspace

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 Folien
  • 15.04. fällt aus
  • 22.04. 10:15 Einführender Vortrag 1)
    • 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 2) – Denny Herrnbrodt
    • 02. Variablen 3) – Daniel Flat
  • 03.06. Meeting 11:00am
    • Abgabe bis Mo. 31.05. 11:59am
    • 03. Zeiger 4) – Johannes Bräuning
    • 04. Datenstrukturen 5) – Luis Moser
    • 05. Zeigerarithmetik, Funktionszeiger 6) – Tim Helmke
  • 10.06. Meeting 11:00am
    • Abgabe bis Mo. 07.06. 11:59am
    • 06. Kompilieren und Linken 7) – Joshua Lowe
    • 07. Bibliotheken, Header, Modularität 8) – Julia Ludwig
    • 08. Compiler Optimierungen 9) – Timo Bemmer
  • 17.06. Meeting 11:00am
    • Abgabe bis Mo. 14.06. 11:59am
    • 09. Debugging und gdb 10) – Michael Römer
    • 10. Valgrind 11) – Maximilian Hartz
    • 11. Fehlerbehandlung 12) – Steffen Schulze
  • 24.06. Meeting 11:00am
    • Abgabe bis Mo. 21.06. 11:59am
    • 12. Threads 13) – Christian Widera
    • 13. OpenMP 14) – Niklas Beck
    • 14. Präprozessor 15) – Erik Brammann
  • 01.07. Meeting 11:00am
    • Abgabe bis Mo. 28.06. 11:59am
    • 15. glibc 16) – Jan-Luca Kühlhorn
    • 16. C-Standards 17) – Niels Birker
    • 17. C++ 18) – Jannes Noack
  • 08.07. Meeting 11:00am
    • Abgabe bis Mo. 05.07. 11:59am
    • 18. I/O 19) – Niklas Kreikenbohm
    • 19. Undefiniertes Verhalten 20) – Konstanze Reupert
    • 20. Kernel C 21) – Cedric Robert

Literaturhinweise

1) , 2) , 3) , 4) , 11) , 12) , 19) , 20) , 21)
Anna Fuchs
5) , 15) , 16) , 17) , 18)
Jakob Lüttgau
6) , 7) , 8) , 9) , 10) , 13) , 14)
Jannek Squar
teaching/sommersemester_2021/effiziente_programmierung_in_c.txt · Last modified: 2021-04-15 18:36 by Anna Fuchs