====== Seminar „Effiziente Programmierung“ ======
===== Beschreibung =====
In diesem Seminar geht es um die effiziente Programmierung im weiteren Sinne.
Dazu gehören sowohl die eigentliche Entwicklung und das Debugging aber auch der Energieverbrauch und die Laufzeit des Programms.
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 [[:teaching:organisatorische_hinweise:seminar_proseminar#seminare|Hinweise zu Seminaren]].
===== 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 Uhr ||
|| Ort || [[https://www.uni-hamburg.de/onTEAM/campus/index.html?loc=i12340438|DKRZ]], Raum 034 ||
|| Mailingliste || [[https://wr.informatik.uni-hamburg.de/listinfo/ep-1718|EP-1718]] ||
===== Dozenten =====
* [[People:Alumni:Michael Kuhn]] (Ansprechpartner)
* [[People:Anna Fuchs]]
* [[People:Alumni:Nabeeh Jumah]]
* [[People:Externals:Jakob Lüttgau]]
* [[People:Externals:Anastasiia Novikova]]
* [[People:Jannek Squar]]
* [[People:Alumni:Kira Duwe]]
* [[People:Externals:Yevhen Alforov]]
* [[People:Alumni:Philipp Neumann]]
===== 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.
* 19.10. Einführung {{:teaching:wintersemester_2017_2018:ep-1718-einfuehrung.pdf|Folien}}
* 26.10. Fällt aus
* 02.11. Fällt aus
* 09.11.
* OpenMP -- Niklas Wittmer {{:teaching:wintersemester_2017_2018:ep-1718-wittmer-openmp-praesentation.pdf|Folien}} {{:teaching:wintersemester_2017_2018:ep-1718-wittmer-openmp-ausarbeitung.pdf|Ausarbeitung}} ((Michael Kuhn))
* Buildsysteme -- Yannic Köster {{:teaching:wintersemester_2017_2018:ep-1718-koester-buildsysteme-praesentation.pdf|Folien}} {{:teaching:wintersemester_2017_2018:ep-1718-koester-buildsysteme-ausarbeitung.pdf|Ausarbeitung}} ((Michael Kuhn))
* 16.11. **(Raum 023)**
* Fällt aus
* 23.11. **(09:45--12:00)**
* Energy efficiency -- Willy Kah {{:teaching:wintersemester_2017_2018:ep-1718-kah-energy-efficiency-praesentation.pdf|Folien}} {{:teaching:wintersemester_2017_2018:ep-1718-kha-energieeffizienz-ausarbeitung.pdf|Ausarbeitung}} ((Yevhen Alforov))
* Profiling in Python -- Jan Pohlmann {{:teaching:wintersemester_2017_2018:ep-1718-pohlmann-pythonprofiling-praesentation.pdf|Folien}} ((Michael Kuhn))
* 30.11. **(Raum 023)**
* Machine Learning -- Kevin Malinowski {{:teaching:wintersemester_2017_2018:ep-1718-malinowski-machine_learning-praesentation.pdf|Folien}} {{ :teaching:wintersemester_2017_2018:ep-1718-malinowski-machine_learning-ausarbeitung.pdf |Ausarbeitung}}((Anastasiia Novikova))
* Statische Analyse ((Michael Kuhn))
* 07.12.
* Code Review -- Jan Ole Wellnitz {{:teaching:wintersemester_2017_2018:ep-1718-wellnitz-code-review-folien.pdf|Folien}} {{:teaching:wintersemester_2017_2018:ep-1718-wellnitz-code-review-ausarbeitung.pdf|Ausarbeitung}}((Anna Fuchs))
* Test-Driven Development -- Meik Dachs ((Jakob Lüttgau))
* 14.12.
* Debugging im Linux-Kernel -- Marc David ((Anna Fuchs)) {{:teaching:wintersemester_2017_2018:ep-1718-david-debugging-im-linux-kernel-folien.pdf|Folien}} {{:teaching:wintersemester_2017_2018:ep-1718-david-debugging-im-linux-kernel.pdf|Ausarbeitung}}
* Effiziente Synchronisations- und Sperrverfahren -- Harry Flohr ((Anna Fuchs)) {{:teaching:wintersemester_2017_2018:ep-1718-flohr-effiziente-synchronisations-und-sperrverfahren-ausarbeitung.pdf|Ausarbeitung}}
* 21.12.
* Optimizing caching on GPUs ((Nabeeh Jumah))
* Memory management and optimizations -- Tim Wischhof {{:teaching:wintersemester_2017_2018:ep-1718-wischhof-memory-management-praesentation.pdf|Folien}} {{:teaching:wintersemester_2017_2018:ep-1718-wischhof-memory-management-ausarbeitung.pdf|Ausarbeitung}} ((Kira Duwe))
* 11.01.
* Statische Code-Optimierung mit LLVM und Polly -- Kim Wittenburg {{ :teaching:wintersemester_2017_2018:ep-1718-wittenburg-polly_durckversion.pdf |Folien}}((Jannek Squar))
* Abstract cost functions ((Jannek Squar))
* 18.01. **(09:45--12:00)**
* zram -- RAM-Kompression -- Benjamin Warnke {{:teaching:wintersemester_2017_2018:ep-1718-warnke-zram-praesentation.pdf|Folien}} ((Michael Kuhn))
* Kompression -- Tim Kilian {{:teaching:wintersemester_2017_2018:ep-1718-kilian-kompression-praesentation.pdf|Folien}} {{ :teaching:wintersemester_2017_2018:ep-1718-kilian-kompression-ausarbeitung.pdf |Ausarbeitung}} ((Anastasiia Novikova))
* Performance Tools -- Tim Jammer {{ :teaching:wintersemester_2017_2018:ep-1718-jammer-performance-tools.pdf |Handout}} ((Jannek Squar))
* 25.01. **(09:45--12:00)**
* Decision Support Systems -- Fabian Karl {{:teaching:wintersemester_2017_2018:ep-1718-karl-decision-support-systems-praesentation.pdf|Folien}} {{:teaching:wintersemester_2017_2018:ep-1718-karl-decision-support-systems-ausarbeitung.pdf|Ausarbeitung}} ((Anastasiia Novikova)) ((Yevhen Alforov))
* Robert Brown ((Philipp Neumann))
* Kai Brusch ((Philipp Neumann))
* 01.02.
* Effiziente Netzwerkkommunikation -- Lars Thoms {{:teaching:wintersemester_2017_2018:ep-1718-thoms-netzwerk-praesentation.pdf|Folien}} ((Michael Kuhn))
* Hauke Schmidt ((Jakob Lüttgau))
===== Literaturhinweise =====
* http://www.brendangregg.com/perf.html
* http://smackerelofopinion.blogspot.de/2012/09/striving-for-better-code-quality.html
* https://www.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.2011.01.02a.pdf
* http://www.brendangregg.com/Perf/linux_perf_tools_full.png
* https://github.com/ascar-io/pilot-bench
* https://www.nylas.com/blog/performance/
* http://pages.cs.wisc.edu/~remzi/OSTEP/vm-beyondphys-policy.pdf (Vergleich von Cache Policies, Hitrate verbessern)
* http://www.catb.org/esr/structure-packing/ (sehr guter Einstieg, Beispielprogramm zum Experimentieren)
* https://dl.acm.org/citation.cfm?id=375978 (detaillierte Darstellung von Code Rewritings)
* http://article.sapub.org/10.5923.j.ajca.20120103.01.html
* https://link.springer.com/content/pdf/10.1007%2F978-3-540-31985-6_10.pdf
* https://link.springer.com/content/pdf/10.1007%2F978-3-319-10572-7_6.pdf