This is an old revision of the document!
Table of Contents
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 zur beliebtesten Programmiersprache 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.1)
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 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
Dozenten
- Jakob Lüttgau (Ansprechpartner)
Themen
- Python Language Overview
- Datatypes and Data Structures
- Object Model
- Decorators
- shebang
- PEPs
- Standard packages
- An overview of the default packages
- Handling unicode
- argparse
- logging
- itertools
- pdb, debugging, also gdb support
- Virtual Environments
- python path
- pip / PyPi
- Anaconda
- Python Packaging
- How to build a python package
- Documentation with Sphinx
- Testing in Python (pytest, nose, …)
- Python Performance
- C vs. pure Python, C vs. e.g., Numpy
- Concurrency in Python
- GIL, and threads
- multiprocessing
- MPI
- GPU support?
- Important external Python Packages
- Numpy
- Scipy
- Jupyter/IPython
- Pandas
- h5py
- Scrapy
- …
- Language Bindings for High-Performance
- Native Interface (C, C++)
- CFFI
- Implementations (Cpython, PyPy, …)
- Tensorflow (Architecture Perspective)
- Spack (Architecture Perspective, How-To)
- Web Related (Flask, Django, Rest-Frameworks)
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.
- 29.04.
- 06.05.
- 13.05.
- 20.05.
- 27.05.
- 03.06.
- 17.06.
- 24.06. (Raum 023)
- 01.07.
- 08.07.