====== Proseminar „Python im Hochleistungsrechnen“ ======
===== Beschreibung =====
Python als einfach zu lernende objekt-orientierte Programmiersprache ist seit jeher beliebt für die Automatisierung kleinerer Aufgaben im Alltag oder im Kontext von Web-Anwendungen.
Erst kürzlich stieg Python zu einer der beliebtesten Programmiersprachen auf.
Dieser Umstand ist nicht zuletzt dem sich stetig verbessernden Ökosystem aus einer umfänglichen Standardbibliothek, der relativ großen Entwickler-Community und vielen hochwertigen Zusatzpaketen wie z. B. Numpy, Django, TensorFlow oder Pandas zu verdanken.
Insbesondere die Bibliotheken aus den Bereichen Data Science und Machine Learning machen Python auch im Hochleistungsrechnen zunehmend relevant.
Zusätzlich können Wissenschaftler ihre Forschungsergebnisse z. B. in Form von Jupyter-Notebooks interaktiv dokumentieren, um ihre Ergebnisse leicht reproduzierbar zu teilen.
Gerüchten zufolge lassen sich sogar fundamentale Naturgesetze wie etwa die Schwerkraft mit dem Import eines einfachen Packages aushebeln.((https://xkcd.com/353/))
Diese Veranstaltung gibt einen Überblick über die wichtigsten Funktionen und wagt einen Blick hinter die Kulissen, um Sie in die Lage zu versetzen, auch unter Python nicht auf effiziente Implementationen verzichten zu müssen.
Beachten Sie auch unsere allgemeinen organisatorischen [[:teaching:organisatorische_hinweise:seminar_proseminar#proseminare|Hinweise zu Proseminaren]].
===== Zielgruppe =====
Das Proseminar 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 || Montag 10--12 Uhr ||
|| Ort || [[https://www.uni-hamburg.de/onTEAM/campus/index.html?loc=i12340438|DKRZ]], Raum 034 ||
|| Mailingliste || [[https://wr.informatik.uni-hamburg.de/listinfo/pih-19|PIH-19]] ||
===== Dozenten =====
* [[People:Externals:Jakob Lüttgau]] (Ansprechpartner)
* [[People:Alumni:Kira Duwe]]
* [[People:Alumni:Christian Hovy]]
* [[People:Alumni:Michael Kuhn]]
* [[People:Jannek Squar]]
===== 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.
* 01.04. Einführung
* 08.04.
* 15.04. **Fällt aus**
* 29.04.
* Python Language Overview -- Lukas Voß ((Jakob Lüttgau))
* Datatypes and Data Structures
* Object Model
* Generators, List Comprehensions
* Decorators
* (shebang)
* PEPs -- Noah Fuhst ((Michael Kuhn)) {{:teaching:sommersemester_2019:pih-19-fuhst-pep-praesentation.pdf|Präsentation}} {{:teaching:sommersemester_2019:pih-19-fuhst-pep-ausarbeitung.pdf|Ausarbeitung}}
* 06.05.
* Virtual Environments -- Youssef Al Shriteh ((Michael Kuhn)) {{:teaching:sommersemester_2019:pih-19-al-shriteh-virtual-environments-praesentation.pdf|Folien}} {{:teaching:sommersemester_2019:pih-19-al-shriteh-virtual-environments-ausarbeitung.pdf|Ausarbeitung}}
* python path
* pip / PyPi
* Anaconda
* Jupyter/IPython -- Darwin Willers ((Jakob Lüttgau))
* 13.05.
* Python Packaging -- Inga Franzen ((Jakob Lüttgau))
* How to build a python package
* Documentation with Sphinx
* Testing in Python (pytest, nose, ...)
* pylint
* Spack (Architecture Perspective, How-To) -- Hauke Sommerfeld ((Michael Kuhn)) {{:teaching:sommersemester_2019:pih-19-sommerfeld-spack-praesentation.pdf|Präsentation}} {{:teaching:sommersemester_2019:pih-19-sommerfeld-spack-ausarbeitung.pdf|Ausarbeitung}}
* 20.05.
* Debugging (pdb, und integration mit gdb support) -- Yuliia Lysa ((Jannek Squar)) {{ :teaching:sommersemester_2019:pih-19-lysa-debugging-presentation.pdf |Folien }} {{ :teaching:sommersemester_2019:pih-19-lysa-ausarbeitung.pdf |Ausarbeitung}}
* Numpy -- Arjun Kumar ((Christian Hovy))
* Scipy, Pandas -- Felix Maurer ((Jannek Squar)) {{ :teaching:sommersemester_2019:pih-19_maurer_scipy-presentation.pdf |Präsentation}} {{ :teaching:sommersemester_2019:pih-19-maurer-ausarbeitung.pdf |Ausarbeitung}}
* 27.05.
* h5py -- Melvin Höfges ((Kira Duwe)) {{ :teaching:sommersemester_2019:pih-19-hoefges-h5py-praesentation.pdf |Präsentation}}{{ :teaching:sommersemester_2019:pih-19-hoefges-h5py-ausarbeitung.pdf |Ausarbeitung}}
* Scrapy -- Dominik Buchhardt ((Christian Hovy))
* 03.06. **(Raum 023)**
* Implementations (Cpython, PyPy, ...) -- Jurik Karimian ((Jakob Lüttgau))
* C/C++ Extensions -- Marcel Robohm ((Kira Duwe)) {{:teaching:sommersemester_2019:pih-19-robohm-c_cpp_extensions-praesentation.pdf|Präsentation}}{{:teaching:sommersemester_2019:pih-19-robohm-c_cpp_extensions-ausarbeitung.pdf|Ausarbeitung}}
* 17.06.
* Python Performance -- Nedim Seroka ((Jakob Lüttgau))
* C vs. pure Python, C vs. e.g., Numpy
* CFFI -- Leon Fritz ((Michael Kuhn)) {{:teaching:sommersemester_2019:pih-19-fritz-cffi-praesentation.pdf|Präsentation}} {{:teaching:sommersemester_2019:pih-19-fritz-cffi-ausarbeitung.pdf|Ausarbeitung}}
* Standard packages ((Kira Duwe))
* An overview of the default packages
* Handling unicode
* argparse, click..
* logging
* itertools
* 24.06. **(Raum 023)**
* GIL, and threads, multiprocessing -- Pascal Lindner ((Jannek Squar)) {{ :teaching:sommersemester_2019:pih-19-lindner-folien.pdf |Folien}} {{ :teaching:sommersemester_2019:pih-19-lindner-ausarbeitung.pdf |Ausarbeitung}}
* MPI -- Alexander Gerlach ((Jannek Squar)) {{ :teaching:sommersemester_2019:pih-19_gerlach_mpi4py-presentation.pdf |Präsentation}} {{ :teaching:sommersemester_2019:pih-19-gerlach-ausarbeitung.pdf |Ausarbeitung}}
* 01.07.
* Dask (distributed scheduling), xarray -- Aaron Spring ((Michael Kuhn)) {{:teaching:sommersemester_2019:pih-19-spring-xarray-dask-praesentation.pdf|Präsentation}} {{:teaching:sommersemester_2019:pih-19-spring-xarray-dask-ausarbeitung.pdf|Ausarbeitung}}
* GPU support -- Lars Michaelis ((Christian Hovy))
* Tensorflow (Architecture Perspective) ((Kira Duwe))
* 08.07.
* OpenStack (Architecture Perspective) ((Christian Hovy))
* Web Related (Flask, Django, Rest-Frameworks) -- Valerij Dobler ((Christian Hovy))
===== Literaturhinweise =====