teaching:sommersemester_2019:python_im_hochleistungsrechnen

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

Zeit Montag 10–12 Uhr
Ort DKRZ, Raum 034
Mailingliste PIH-19

Dozenten

Themen

  • Python Language Overview
    • Datatypes and Data Structures
    • Object Model
    • Generators, List Comprehensions
    • Decorators
    • (shebang)
  • PEPs
  • Standard packages
    • An overview of the default packages
    • Handling unicode
    • argparse, click..
    • 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, …)
    • pylint
  • 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.

Literaturhinweise

teaching/sommersemester_2019/python_im_hochleistungsrechnen.txt · Last modified: 2019-02-03 11:16 by Jakob Lüttgau