SWS |
4 |
ECTS |
5 |
Sprache(n) |
Deutsch
(Standard)
Englisch
|
Lehrform |
SU mit Praktikum |
Angebot |
in jedem Sommersemester |
Aufwand |
30 Präsenzstunden Vorlesung, 30 Präsenzstunden Praktikum, 45 Stunden Vor-/Nachbereitung des Praktikums, 45 Stunden Nachbereitung der Vorlesung und Prüfungsvorbereitung |
Voraussetzungen |
Computational Thinking |
Ziele |
LERNZIELE
Die Studierenden vertiefen ihre Programmierkenntnisse, insbesondere im Umgang mit grundlegenden und komplexeren Datenstrukturen sowie in der Anwendung funktionaler Programmierkonzepte. Darüber hinaus werden sie befähigt, parallele Algorithmen zu verstehen und erste praktische Erfahrungen im Big-Data-Umfeld zu sammeln, um sich auf anspruchsvolle Programmieraufgaben in Studium und Beruf vorzubereiten.
FACH- & METHODENKOMPETENZ
Die Studierenden sind in der Lage,
- komplexe Datenstrukturen wie Bäume und Graphen zu modellieren und praktisch einzusetzen,
- die Grundlagen der funktionalen Programmierung zu erläutern und auf Python oder andere Sprachen zu übertragen,
- sich effizient in neue Programmiersprachen einzuarbeiten und deren Konzepte zu nutzen,
- erste parallele Algorithmen umzusetzen und diese in Big-Data-Frameworks, wie z.B. Apache Spark, anzuwenden,
- die Programmierpraxis durch strukturierte Problemlösungsansätze zu verbessern und fortgeschrittene Algorithmen in realistischen Szenarien anzuwenden.
ÜBERFACHLICHE KOMPETENZ
Teamarbeit: Die Studierenden arbeiten in Kleingruppen, um Aufgabenstellungen gemeinsam zu lösen.
Projektmanagement und Software-Engineering: Im Rahmen des Kurses wird die Code-Qualität durch den Einsatz von Versionierungstools (z. B. Git) und Unittests sichergestellt. Dabei wird Wert auf strukturierte Arbeitsweise und den Einsatz moderner Entwicklungswerkzeuge gelegt.
Analytisches Denken: Die Studierenden entwickeln die Fähigkeit, komplexe Probleme zu analysieren, zu abstrahieren und effiziente Algorithmen zu konzipieren. |
Inhalt |
- Versionierung und Zusammenarbeit:
- Einführung in Git und GitLab (z. B. Pull Requests, Branches, CI/CD).
- Erweiterte Datenstrukturen:
- Listen, Stacks, Queues.
- Bäume (z. B. Binärbäume, AVL-Bäume).
- Graphen (z. B. DFS, BFS, kürzeste Wege).
- Komplexe Datenstrukturen und Algorithmen:
- Hashmaps und Sets.
- Sortieralgorithmen (z. B. QuickSort, MergeSort).
- Graphenalgorithmen (z. B. Dijkstra, Kruskal).
- Grundlagen der funktionalen Programmierung:
- Einführung in funktionale Paradigmen mit Python.
- Lambda-Ausdrücke und Higher Order Functions.
- Immutability und Rekursion.
- Map, Reduce, Filter und Folds.
- Algorithmen und Daten in der Praxis:
- Algorithmendesign und Komplexitätsanalyse.
- Verarbeitung großer Datenmengen mit Python und Bibliotheken wie Pandas oder NumPy.
- Parallel- und Nebenläufigkeit:
- Einführung in parallele Berechnungen und Algorithmen.
- Grundlagen der nebenläufigen Programmierung (z. B. Threads, Async/Await in Python).
- Praxis: Erste Übungen mit massiv parallelen Algorithmen (z. B. MapReduce).
- Überblick: Big-Data-Frameworks wie Apache Spark.
- Testen und Qualitätssicherung:
- Einführung in Unit-Tests und Test-Driven Development (TDD).
- Werkzeuge zur Code-Qualitätskontrolle (z. B. linters, CI-Pipelines).
|
Medien und Methoden |
Folien, Livecoding, virtuelle Lehrräume, Gruppenarbeit |
Literatur |
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, MIT Press. 2009
- Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser, Data Structures and Algorithms in Python, Wiley. 2013
- Wes McKinney, Python for Data Analysis, O'Reilly Media. 2018
- Miran Lipovača, Learn You a Haskell for Great Good!, No Starch Press. 2011
- Steven Lott, Functional Programming in Python, O'Reilly Media. 2018
- Giancarlo Zaccone, Python Parallel Programming Cookbook, Packt Publishing. 2017
- Wampler, Viners, Programming Scala, O'Reilly Media. 2014
- Rajkumar Buyya et al., Big Data: Principles and Paradigms, Elsevier. 2016
- Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, Prentice Hall. 2008
- Andrew Hunt, David Thomas, The Pragmatic Programmer: Your Journey to Mastery, Addison-Wesley. 2019
- LeetCode
- Real Python
- GeeksforGeeks
|
Zuordnungen Curricula |
SPO |
Fachgruppe |
Code |
ab Semester |
Prüfungsleistungen |
|