I9PB-43021 | Programmierkurs 2 Data Science (WS24/25)


Kursbeschreibung


Dieser Kurs bereitet die Studierenden auf fortgeschrittene Bereiche in Data Sciene vor und führt in einige der Werkzeuge und Begriffe ein, die häufig in Industrie und Forschung verwendet werden. Zu den Themen gehören: Lebenszyklus und Teamrollen innerhalb eines Data Science Projekts; Datenbeschaffung, Datenverständniss, Datenverarbeitung, Datenvisualisierung, Ergebnisspräsentation; Python-Programmierung und der Anwendung von grundlegenden Bibliotheken;

Lernziele: siehe Link zu Modulhandbuch

Dozent: Leonard Traeger

Vorlesungs und Praktikum (kombiniert): Montags um 12-13:30 u. 14:15-15:50 Uhr; Vorlesungen werden nicht aufgezeichnet

Kurswebsite: http://leotraeg.github.io/me/I9PB-43021.html

Kurssprache: Folien (Englisch), Vorlesung (Deutsch), Mündliche Prüfung (wahlweise Deutsch/Englisch)

GitHub: https://github.com/leotraeg/FHDTM-P2DS-WS2425

Ilias (Umfragen, Artefakte, Q&A): https://www.ilias.fh-dortmund.de/ilias/goto_ilias-fhdo_crs_1334419.html

Sprechstunde: über Kontakt buchbar (online)

Raum: C.2.32 (in Präsenzlehre) / oder WebEx-Link (Online) siehe Zeitplan in Spalte "Ort"

Format


Vorlesung: Die Vorlesung vermittelt theoretische Konzepte und stellt Werkzeuge der Programmierung im Bereich Data Science vor (passiv). Nach Abschluss und Zusammenfassung eines Konzepts sind die Kursteilnehmer*innen gefragt, Erlerntes eigenständig, jedoch mit Hilfestellungen, konzeptionell oder in der eigenen Programmierumgebung auf ein Anwendungsbeispiel zu übertragen (aktiv). Lernziele werden zu Beginn einer Vorlesung formuliert. Übungsaufgaben sind in den Vorlesungsfolien als Training oder Think-Pair-Share gekennzeichnet.

Logistik: Der Vorlesungsort findet i.d.R. wöchentlich und in Präsenz (P) statt. Bei geigneten Lehrinhalten, überschaubarer Teilnehmeranzahl und Teilnehmerabsprache kann die Vorlesung mit einer einwöchigen Vorlaufzeit in ein Online-Format (O) wechseln. In keiner der Formate wird die Vorlesung aufgezeichnet.

Artefakte: Die Abgabe von Praktika und Projektmeilensteinen findet ausschließlich digital über Ilias zum Tagesende (23:59 Uhr) des Stichtags statt. Bitte treten Sie dem Kurs bei. Die verbindlichen Abgabefristen können sie unter "02 Artefakte" einsehen.

Praktikum: Das Praktikum kann vorzugsweise zu zweit oder inviduell bearbeitet werden. Es ist in zwei Abschnitte unterteilt, befasst Lerninhalte von der Vorlesung und ist jeweils über drei Wochen zu bearbeiten. Die Aufgaben unterstützen die Studierenden beim konzeptionellen Verständniss und notwendiger Programmierkenntnisse der verwendeten Bibliotheken innerhalb des Data Science Projekts. Beide Praktikumsabschnitte sind freiweillig und können jeweils mit bis zu 8% (Gesamt 16%) an zusätzlichen Prozentpunkten zur Aufrechnungen der Modulnote beitragen.

  • Praktikum I: Python I+II+III und NumPy
  • Praktikum II: Pandas und Visualisation

  • Projekt: Das Projekt verläuft parallel zum gesamten Semester und ist innerhalb selbst bestimmender Teams (à vier Teilnehmenden) zu bearbeiten. Ziel ist die Durchführung eines praktischen Data Science Projekts auf Grundlage eines Teambestimmenden Datensatzes. Das Projekt darf sich mit anderen Forschungsarbeiten überschneiden, aber nicht mit einem anderen Modul. Aufbauende Forschungsarbeiten, an welchen Sie oder Ihre Teamkollegen arbeiten, oder mit Ihrer Arbeit zu tun haben, sind sogar erwünscht. Bitte klären Sie in diesem Fall frühzeitig ab, dass alle Gruppenmitglieder Zugriff auf ein Data Snapshot (.csv, .json, .xml, o.ä.) erhalten. Ich hoffe, dieser Kurs hilft Ihnen bei der Lösung von Data-Science-Aufgaben, an denen Sie bereits interessiert sind. Ihre Projektarbeit muss jedoch Ihre eigene sein und nicht die Ihrer (Arbeits-)Kollegen oder höhersemestriger Kommilitonen. Das Projekt enthält eine programmatische Umsetzungskomponente. Beachten Sie, dass Data Science Projekte anspruchsvoll und unsicher im Ausgang sind, und es vollkommen in Ordnung ist, wenn das Projekt keine positiven Ergebnisse (Erkentnisse) liefert.

    Beispiele für Themenbereiche sind die Auswertung von Finanzdaten, medizinische/klinische Anwendungen, Geschäftsanwendungen, soziale Netzwerke, usw. Hier sind ein paar mögliche Quellen für Datensätze, die Ihnen den Einstieg erleichtern könnten:

  • Eine Sammlung von Datensätzen aus einer Vielzahl von Domänen, zu der über 100 Personen beigetragen haben: https://github.com/awesomedata/awesome-public-datasets
  • UCI ML Repository: http://archive.ics.uci.edu/ml/
  • Kaggle Datasets: https://www.kaggle.com/datasets
  • Open Data Europa: https://data.europa.eu/en
  • Datenportal für Deutschland: https://www.govdata.de/
  • Landesdatenbank NRW: https://www.landesdatenbank.nrw.de/ldbnrw/online
  • Open Data Dortmund: https://opendata.dortmund.de/Informationsportal/
  • Web-Scraping: mehr dazu in Woche #6 mit einer Live-Demo (auf Anfrage stelle ich gerne die Demo Skripte vorab zur Verfügung).

  • Um einen erfolgreichen Rahmen sicherzustellen, ist das Projekt in drei Meilensteine aufgeteilt:


    Meilenstein I (Bericht mit nicht mehr als 2 Seiten):
  • Teamname (z.B. HealthyFoodies, Sportineers, ... ihrer Kreativität sind keine Grenzen gesetzt) und Namen der Mitglieder.
  • Beschreibung der angestrebten Projektdomäne, einer prägnanten Kurzbeschreibung, Zielen und Motivation samt Quelle:
    Beispiel I: Gesundheit wegen steigender Adipositas-Rate Quelle.
    Beispiel II: Fußballspieler, da Deutscher Fußball-Bund (DFB) Qualität und Transparenz der Spielvermittlung und -beratung nachhaltig erhöhen will Quelle.
  • Wahl eines Data Science Life Cycle Frameworks (KDD, CRIPS-DM, OSEMN oder eigene Data Science Pipeline) mit einer prägnanten Beschreibung der Komponenten, einer prozentualen Einschätzung des Aufwands im Projektverlauf und potenziellen Herausforderungen:
    Beispiel I: Framework OSEMN und Komponente (O) Obtain: 50% - Datensatz existiert (wahrscheinlich / in der gewünschten Form) noch nicht und wird mittels Web-Scraping extrahiert.
    Beispiel II: Framework KDD und Komponente Preprocessing: 50% - Datensatz existiert in Rohformat, benötigt jedoch voraussichtlich umfassendes Data Preprocessing.
    Bitte beachten Sie unbedingt, dass keine Data Mining Methoden wie supervised (classification oder regression) oder unsupervised models (clustering) inklusive neural networks in diesem Modul behandelt werden. Bitte nullen Sie daher den Arbeitsaufwand dieser Komponente in dem gewählten Framework.
  • Auflistung von projektbezogenen (von Ihnen bestimmter) Data-Literacy-Kompetenzen nach Ridsdale (2015) in einer RACI-Matrix aufgerissen nach Teammitgliedern. Bitte besprechen Sie eure persönlichen Interessensgebiete, Stärken und Schwächen und handeln Sie eine faire Balance aus.
  • Kurze Beschreibung über die kollaborative Zusammenarbeit (z.B. Meeting Struktur, Regelmäßigkeit und Tool: präsenz/online, Zoom/Google Meet/Teams; Tech-Stack und Dokumentation: Python in Colab Research/Anaconda; File Sharing in Google Drive/DropBox/GitHub/GitLab).

  • Wenn Sie Hilfe bei der Auswahl einer Gruppe, Projektdomäne oder Data Science Life Cycle Frameworks benötigen, vereinbaren Sie bitte einen Termin in meiner Sprechstunde oder senden Sie mir eine Email. Sie werden ihre Projektdomäne gemeinsam den anderen Studierenden in Woche #4 (ca. 2 Minuten und nur über die Tonspur) vorstellen.


    Meilenstein II (Bericht in Form eines .ipynb Python Skripts):
  • In dieser Projektphase haben Sie bereits einen Datensatz (oder Datensätze) passend zu Ihrer Projektdomäne und Zielen von einer vertrauensvollen Quelle identifiziert (oder extrahiert) und als DataFrame in Python importiert und initial analysiert.
  • Die Bewertung von diesem Meilenstein basiert auf der inhaltlichen Einordnung ihres Projektvorhabens in Methodik (Data Science Framework gerne als Darstellung), einer Recherche zu ähnlichen Datensätzen (über den von ihnen gewählten Datensatz hinaus) und dem Vorliegen eines Datensatzes (oder sichtlich ersten erfolgreichen Web-Scrapings) mit ausreichenden (>10) kategorischen und numerischen Attributen und Zeilen (>100) für die weitere Analyse.
  • Bitte halten Sie sich an eine kurze und prägnante Formulierungen. Nutzen Sie bitte Textzellen in ihrem .ipynb Skript samt Sektionen und Formatierung zur übersichtlicheren Lesbarkeit.
  • Sektionsvorschläge: 1. Einleitung, 2. Vergleichbare Datensätze und Analysen, 3. Methodik, 4. Data Aquisition, 5. Initial Data Analysis / Data Summary / ggf. erste Meta-Analysen, 6. ggf. erste Vorschläge / Beschreibung / Pseudo-Code für Data Preprocessing, 7. Herausforderungen für weiteren Projektverlauf.

  • Meilenstein II und der Zeitraum zur Prüfungsregistrierung liegen nah beieinander. Bitte kommunizieren Sie daher frühzeitig ihre Erwartungen an das Projekt mit ihrem Team, um etwaige Konflikte frühzeitig aus dem Weg zu räumen. Für Hilfestellungen bitte ich Sie einen Termin in meiner Sprechstunde zu buchen.

    Meilenstein III.1 (A2 Poster):
  • Visuell aufbereitete Elemente von Meilenstein III (Orientierungshilfe: https://guides.nyu.edu/posters/poster-basics)

  • Meilenstein III.2 (Abschlussbericht in Form eines .ipynb Python Skripts):
  • Sektionsvorschläge: Alle Elemente von Meilenstein II und zusätzlich abgeschlossenes 6. Data Preprocessing, 7. Data Visualisation, 8. Diskussion, 9. Fazit

  • Notenzusammensetzung; Änderungen vorbehalten

    Artefakt Max. Punkte
    Ilias Forum Beitrag oder Kommentar 0,66%
    Praktikum I 8%
    Praktikum II 8%
    Projekt Meilenstein I 5%
    Projekt Meilenstein II 10%
    Projekt Meilenstein III.1 35%
    Mündliche Prüfung über Vorlesungsinhalte
    und das Projekt Meilenstein III.2
    50%

    Skala; Änderungen vorbehalten

    Punkte Note
    116,66 - 94,9 % 1,0
    <94,9 - 89,5 % 1,3
    <89,5 - 84,3 % 1,7
    <84,3 - 79,0 % 2,0
    <79,0 - 73,7 % 2,3
    <73,7 - 68,2 % 2,7
    <68,2 - 63,1 % 3,0
    <63,1 - 57,9 % 3,3
    <57,9 - 52,6 % 3,7
    <52,6 - 50,0 % 4,0
    < 50,0 % n.b.


    Literatur Empfehlungen:

  • VanderPlas, J., "Python Data Science Handbook", O'Reilly, 2017 (hier digital und kostenfrei verfügbar)
  • Fabio Nelli, "Python Data Analytics With Pandas, NumPy, and Matplotlib" (2nd edition), Apress (Springer), 2018 (digital und kostenfrei über Hochschul VPN verfügbar; bis Seite 312)
  • Wickham, H. und Grolemund, G., "R für Data Science", Heidelberg, O'Reilly, 2017
  • Zeitplan

    Datum Woche Zusammenfassung Details Ort Artefakte Literatur
    23.09.24 1 Einführung; Python I (Intro) Einführung Data Science, Kurslogistik, Python, Jupyter and Colab Notebooks, Basic Data Types, Random Numbers, String methods P "Python Data Analytics With Pandas, NumPy, and Matplotlib": Seiten 19-35 ohne Kapitel "Model Validation", "Predictive Modeling", "Deployment"
    30.09.24 2 Python II Data Science Life Cycle, Data Literacy, Ethics, Comparison and Logical Operators, Control Statements, Containers (Lists, Dictionaries, Sets, Tuples), Functions, Functional Programming incl. Map, Filter, Reduce, List Comprehensions, Übersicht zu Anforderungen an Projekt insb. Meilenstein I: Data Science Framework P Teams formiert zu diesem Stichtag (Ilias Gruppe eingetreten) und per Mail an leonard.traeger@fh-dortmund.de von einem Gruppenmitglied bestätigt
    07.10.24 3 Python III + Data Formats Imperative and Declarative Paradigm, Object-Oriented Programming incl. Constructor, Destructor, Decorator annotated and regular Class Methods, and Inheritance;
    CSV, JSON, and XML as Common Data Formats
    O Abgabefrist Projekt Meilenstein I
    Veröffentlichung Praktikum I
    Python OOP Tutorials by Corey Schafer - Working with Classes: https://youtube.com/playlist?list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc&si=ClE0TjUvd0DKzKTZ
    Slides by Charles Severance: https://www.py4e.com/lessons/Objects#
    14.10.24 4 Python NumPy + Open&Tidy Data Containers versus NumPy, Datatypes, Booleans, Comparison, Indexing / Slicing, Reshape, Copy(), Vectorization (Ufuncs), SciPy, Aggregation, Sorting, Broadcasting O VanderPlas, J., "Python Data Science Handbook", O'Reilly, 2017: Seiten 59-124
    cs231n.github.io/python-NumPy-tutorial/
    jbhender.github.io/Stats507/F21/slides/NumPy.slides.html
    docs.scipy.org/doc/scipy/reference/
    21.10.24 5 Keine Vorlesung Vorlesungsfrei
    28.10.24 6 Python Pandas I + Web-Scraping Data Series and Frames, I/O: Read and Parse Different Data Formats, Viewing Data, Indexing, Data Reduction (Selection and Deletion), Data Masking, Viewing Meta Data, Exkurs I: Datenbeschaffung (Demo Web Scraping with BeautifulSoup) P Abgabefrist Praktikum I pandas.pydata.org/Pandas_Cheat_Sheet.pdf
    https://jakevdp.github.io/PythonDataScienceHandbook/03.01-introducing-pandas-objects.html
    04.11.24 7 Python Pandas II.1 NumPy and Pandas, Data Preprocessing (Data Reduction, Data Cleaning, Data Integration, Data Transformation), Exkurs II: Datenverständniss, Datenverarbeitung (Demo Data Preprocessing with Pandas) P Last Call: Hilfestellung Teamprojekt und Datensatz
    11.11.24 8 Keine Vorlesung
    18.11.24 9 Keine Vorlesung Vorlesungsfrei (Blockwoche 2)
    25.11.24 10 Python Pandas II.2 O Abgabefrist Projekt Meilenstein II
    02.12.24 11 Python Visualization Simple Plots, Text and Annotation, Color, Plotting with NumPy and pandas, Data Summary Plots, Meta Data Plots, Exkurs III: Visualisierung und Präsentierung (Demo Plotting) O Veröffentlichung Praktikum II
    09.12.24 12 R I Grundlagen R: Vektorisierte Operationen, Vektoren, Listen, Matrizen, Data Frames, Funktionen und Packages O Zeitraumende Prüfungsregistrierung https://r4ds.hadley.nz/
    https://www.phonetik.uni-muenchen.de/~jmh/lehre/basic_r/_book/index.html
    R Cheatsheet: https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf
    16.12.24 13 R II Dataframes, Funktionen, Transformationen, Visualisierungen O
    23.12.24 14 Keine Vorlesung Vorlesungsfrei (Ferien) Abgabefrist Praktikum II
    30.12.24 15 Keine Vorlesung Vorlesungsfrei (Ferien)
    06.01.25 16 Präsentation Projektposter Studierende präsentieren ihr Projekt untereinander in der ersten Stunde; In der zweiten Stunde findet eine bewertete Präsentation statt (Teamprojekt à 10 Minuten) P Präsentation Projekt Meilenstein III.1
    Frühzeitige Abgabe (tbd.) falls Posterdruck über die Hochschule erwünscht.
    13.01.25 17 Recap Kurszusammenfassung und Prüfungsvorbereitung O Abgabefrist Projekt Meilenstein III.2
    tbd. 18 Mündliche Prüfungen ... 1:1 Termine über Vorlesungsinhalte und das Projekt Meilenstein III.2
    Beginn Prüfungszeitraum
    Bitte unter Ilias drei zeitliche Präferenzen bis zu dieser Woche angeben, sodass zum Stichtag die individuelle Prüfungszeit automatisiert zugewiesen wird.
    O
    Der Zeitplan kann sich noch ändern. Die Spalten "Zusammenfassung" und "Details" sind nur ein Anhaltspunkt für die voraussichtlich zu behandelnden Inhalte, und die Daten, an denen das Material behandelt wird, können sich verschieben.

    Voraussetzungen


    Grundkentnisse in Algorithmen, Datenstrukturen und in der objektorientieren Programmierung von Vorteil.

    Hardware:

  • 4GB RAM, 2 CPU Kerne und 20GB Speicher oder mehr.
  • Windows 10, macOS 10.14, oder Ubunutu 14+/Centos7 (in 64-bit) oder neuer.
  • Ein Computer mit ausreichender Internetgeschwindigkeit. Sollte das Vorlesungsgeschehen zu einem synchronen Onlineformat wechseln, stellen Sie sicher, dass Ihr Computer über einen Video- und Mikrofonanschluss verfügt.
  • Software:

  • Webbrowser, der technische Notebooks ausführen kann.
  • Alternative 1: Jupyter Python Notebook in Google Collab als Web IDE (Vorteil: in Teams arbeiten, kommentieren, dokumentieren und programmieren).
  • Alternative 2: Jupyter Python Notebook in Lokaler Laufumgebung mit Visual Studio Code (Vorteil: Offline arbeiten, in Teams mittels GIT o.ä. Share-Drive arbeiten):
    Python 3.10 oder neuer unter https://www.python.org/downloads/,
    Download Visual Studio Code unter https://code.visualstudio.com/,
    Python in VS Code Anleitung unter https://code.visualstudio.com/docs/python/python-tutorial#_install-a-python-interpreter
    und Python Erweiterungen in Visual Studio Code Extension Marketplace installieren.
  • Alternative 3: Jupyter Python Notebook über Anaconda Package Platform (Vorteil: Offline arbeiten, RStudio und weitere Data Science Platformen inkludiert): Python 3.10 oder neuer unter https://www.python.org/downloads/ und Anaconda.
  • Kontakt


    Onlinetermin bitte über Meetergo buchen oder leonard.traeger@fh-dortmund.de kontaktieren.