====== Proseminar „Python“ ======
===== Beschreibung =====
In diesem Proseminar geht es um die (effiziente) Programmierung in Python im weiteren Sinne.
Dazu gehören grundlegende und weiterführende Themen der Python-Programmierung - unter anderem die generelle Struktur von Python-Skripten, Sprachkonstrukte, wichtige Pakete und weitere Konzepte wie z.B. neue Sprachkonstrukte aus Python3. Wir beschäftigen uns außerdem mit der Leistungsanalyse und dem Debugging von Python-Anwendungen.
Während des Proseminars arbeiten Sie sich in eines der Themen ein und stellen es Ihren Kommilitonen und Kommilitoninnen in einem Vortrag vor. Abzugeben sind neben der Vortragsfolien auch ein exemplarisches Aufgabenblatt mit Übungsaufgaben, die sich mit fortschreitender Schwierigkeit mit dem vorgetragenen Thema beschäftigen und dritten Personen die Eigenkontrolle der gelernten Inhalte ermöglichen sollen. Vom Umfang her sollen Sie zwei angemessen komplexe (nicht zu simpel aber auch nicht zu ausufernd) Aufgaben erstellen, um die Vortrags-Inhalte üben zu können. Die Aufgaben sowie eine Musterlösung sind in einer separaten Datei bei dem/der jeweiligen Betreuer/in per Mail abzugeben.
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 =====
|| Ort || [[https://www.uni-hamburg.de/onTEAM/campus/index.html?loc=i12340438|DKRZ]], Raum 034 ||
|| Zeit || Dienstag 10:15 -- 11:45||
|| Mailingliste || [[https://wr.informatik.uni-hamburg.de/listinfo/py-22|PY-22]] ||
===== Dozenten =====
* [[People:Jannek Squar]] (Ansprechpartner)
* [[People:Anna Fuchs]]
===== 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.
Bitte beachten Sie etwaige Raumänderungen!
* 05.04.22 Einführung {{ :teaching:sommersemester_2022:orga_py22.pdf | Organisatorisches}}
* 12.04.22 //fällt aus//
* 19.04.22 10:15
* Feedback Abgabe: 01.01.00, 00:00
* 00. Interaktion mit Python: Interpreter-Line, Jupyter Lab, Skript, Fortgeschrittenes Skript ((Jannek Squar)) -- Jannek Squar {{ :teaching:sommersemester_2022:py22_2020-04-19_python-interaktion.pdf |Folien}}
* 26.04.22 //fällt aus//
* 03.05.22 //fällt aus//
* Profiling und Debugging ((Jannek Squar)) -- Rafael Lucena de Sena Nunes Silva
* 10.05.22 10:15
* Feedback Abgabe: 31.05.22, 12:15
* 01. Skalare (immutable) Datentypen (inkl. encoding + interne Speicherdarstellung) ((Anna Fuchs)) -- Jacob Schüler
* 02. (Mutable) Datenstukturen (list, tuples) und Operationen (z.B. slice, kopieren) + interne Speicherdarstellung ((Anna Fuchs)) -- Ayke Harmening
* 03. (Mutable) Datenstukturen (dictionary, set) und Operationen + interne Speicherdarstellung ((Jannek Squar)) -- Rana Iqra Khan
* 17.05.22 //fällt aus//
* 24.05.22 //fällt aus//
* 31.05.22 //fällt aus//
* 07.06.22 09:45
* Feedback Abgabe: 07.06.22, 12:15
* 04. Kontrollfluss (loops, conditions, else blocks) ((Anna Fuchs)) -- Karam Taie
* 07. Nebenläufigkeit: Threads und Prozessen (+Dask), Futures und asyncio ((Anna Fuchs)) -- Lukas Krellenberg
* 14.06.22 09:45
* Feedback Abgabe: 14.06.22, 12:15
* 06. Error Handling ((Anna Fuchs)) -- Jannis Karampetsos
* 08. Besserer Code mit Tools: Linting, Type Hinting ((Anna Fuchs)) -- Jan Neumann
* 09. Packages 1: Grundlagen ((Jannek Squar)) -- Helena Becker {{ :teaching:sommersemester_2022:py22_2022-06-14_becker.pdf |Folien}}
* 21.06.22 09:45 //fällt aus//
* 28.06.22 09:45
* Feedback Abgabe: 28.06.22, 12:15
* 10. Packages 2: Best-of ((Jannek Squar)) -- Steffen Beckmann {{ :teaching:sommersemester_2022:py22_2022-06-28_beckmann.pdf |Folien}}
* 11. Numerisches Python mit numpy ((Jannek Squar)) -- Nico Hädicke {{ :teaching:sommersemester_2022:py22_2022-06-28_haedicke.pdf |Folien}}
* 12. Visualisierung mit Matplotlib ((Jannek Squar)) -- Robin Klimczak {{ :teaching:sommersemester_2022:py22_2022-06-28_klimczak.pdf |Folien}}
* 05.07.22 09:45
* Feedback Abgabe: 05.07.22, 12:15
* 13. Objekt-orientierte Programmierung 1: Grundlagen ((Anna Fuchs)) -- Sefkan Demir{{ :teaching:sommersemester_2022:py22_2022-07-07_demir.pdf |Folien}}
* 14. Objekt-orientierte Programmierung 2: Spezielle Methoden ("double underscore methods") + Operator Overloading + Context Manager ((Jannek Squar)) -- Wladislaw Tarassov {{ :teaching:sommersemester_2022:py22_2022-07-05_tarassov.pdf |Folien}}
* 15. Objekt-orientierte Programmierung 3: ABC + Vererbung ((Jannek Squar)) -- Lukas Bliemeister
* 12.07.22 09:45 **(Raum 023)**
* Feedback Abgabe: 12.07.22, 12:15
* 16. Performance-Optimierung ((Jannek Squar)) -- Mara Bockholt
* 05. Funktionen + Generator/Coroutine ((Jannek Squar)) -- Mohammad Raha {{ :teaching:sommersemester_2022:py22_2022-07-12_raha.pdf |Folien}}
* 17. I/O (files, Pandas) ((Anna Fuchs)) -- Jan Hummel
* 18. Metaprogramming ((Jannek Squar)) -- Finn Eilmann {{ :teaching:sommersemester_2022:py22_2022-07-12_eilmann.pdf |Folien}}
* 19. PEPs + Styleguide + Zen of Python ((Jannek Squar)) -- Lucas Harting Candido
===== Literaturhinweise =====
* [[https://peps.python.org/|PEPs]]
* Einrichtung einer eigenen [[https://janakiev.com/blog/jupyter-virtual-envs/|virtuellen Umgebung]]
* [[https://docs.python.org/3/|Python Dokumentation]]