**english version see below**

Kursbeschreibung: Programmierung und Data Science

In diesem Kurs erwerben Studierende grundlegende Fähigkeiten in der Programmierung und Data Science, die in der modernen Chemie (experimentell sowie theoretisch!) unerlässlich sind. Nach erfolgreichem Abschluss dieses Moduls sind die Teilnehmenden in der Lage, Programmierung und Data Science-Konzepte zu verstehen, anzuwenden und anzuwenden, um chemische Daten effektiv zu verarbeiten und zu analysieren.

Lernziele:
Nach Abschluss des Kurses sind die Studierenden in der Lage:

1. Einfache Programme und Scripte in Python zu schreiben, um chemische Daten zu verarbeiten und zu analysieren. Insbesonder werden wir hier auf das Praktikum eingehen um den Studierenden die Arbeit zu erleichtern.
2. Chemische Datensätze zu verarbeiten, einschließlich Datenimport, -änderung, -ausgabe und -darstellung.
3.  Datenmanagement und die generierung von F.A.I.R. Regel kompatiblen Datensätzen
4. Funktionale Zusammenhänge und Geometrien von molekularen Strukturen visuell darzustellen, einschließlich 2D- und 3D-Darstellungen.
5. Wesentliche statistische Kenngrößen zu identifizieren und für experimentelle chemische Daten zu bestimmen.
6. Datenbanken zur Informationsgewinnung effektiv zu nutzen.

Kursinhalt:
Der Kurs umfasst folgende Themen:

- Grundlagen der Programmierung in Python für chemische Anwendungen.
- Datenverarbeitung und -auswertung: Ein- und Ausgabe, Strukturierung, Informationsgewinnung.
- Visuelle Darstellung von chemischen Daten und Funktionen in verschiedenen Dimensionen.
- Molekulare Strukturvisualisierung unter Verwendung von Formaten wie pdb, cif, etc.
- Einführung in statistische Konzepte und Fehleranalyse für chemische Daten.
- Praktische Anwendung von Kurvenanpassung in der chemischen Datenanalyse.
- Nutzung von Datenbanken zur Informationsgewinnung.

Lehr- und Lernmethode:
Der Kurs besteht aus einer wöchentlichen hochinteraktiven Vorlesung und Übungseinheit (4 SWS), die in thematische Blöcke unterteilt ist. Jeder Block beginnt mit einer Einführung durch den Dozenten Prof. Helge S. Stein, gefolgt von praktischen Übungen, bei denen die Studierenden die gelernten Konzepte anwenden und umsetzen können. Dieser stufenweise Ansatz ermöglicht es den Studierenden, in ihrem eigenen Tempo zu lernen und ihre Fähigkeiten schrittweise zu entwickeln. Während der Übungen arbeiten die Studierenden eigenständig am Computer und werden durch den Dozenten unterstützt. Zusätzlich gibt es ein freiwilliges Tutorium zur weiteren Unterstützung.

Medienformen:
Der Kurs nutzt verschiedene Medien, darunter:

- Jupyter Notebooks zum interaktiven Programmieren
- Power-Point-Präsentationen zur Vermittlung von Konzepten und Theorie.
- Übungsblätter (in form von Jupyter Notebooks) für praktische Anwendungen und Übungen.
- Computerarbeit zur Umsetzung von Programmierung und Datenanalyse.
- Interaktive Diskussionen und gemeinsames Lernen in der Präsenz- und Online-Umgebung.

Dieser Kurs bietet eine solide Grundlage in Programmierung und Data Science, um chemische Daten effizient zu verarbeiten, zu analysieren und zu interpretieren. Studierende werden befähigt, moderne technologische Werkzeuge in ihrem zukünftigen Studium und Beruf einzusetzen und ihre Fähigkeiten in der Datenanalyse weiterzuentwickeln. Als einer der ersten Kurse führen wir die Studierenden beireits im ersten Semester in das Datenmanagement ein und bilden so eine neue Generation von Forschenden aus die bereits von Anfang an in der erzeugung und dem Umgang mit F.A.I.R. Daten geschult sind. Die gewonnenen Lerninhalte bilden die Basis für spätere Automatisierung im Labor, Datengetriebene Chemie, und allgemeines maschinelles Lernen und Künstliche Intelligenz. Der Kurs ist explizit für experimentelle, angewandte und theoretische Chemiestudierende konzipiert.

English version:
Course Description: Programming and Data Science

In this course, students acquire fundamental skills in programming and data science that are essential in modern chemistry, both in experimental and theoretical contexts. Upon successful completion of this module, participants will be able to understand, apply, and utilize programming and data science concepts to effectively process and analyze chemical data.

Learning Objectives:
Upon completing the course, students will be able to:

1. Write simple programs and scripts in Python to process and analyze chemical data, with a focus on laboratory work for enhanced practicality.
2. Process chemical datasets, including data import, modification, output, and visualization.
3. Manage data and generate F.A.I.R. (Findable, Accessible, Interoperable, Reusable) compliant datasets.
4. Visually represent functional relationships and geometries of molecular structures, including 2D and 3D representations.
5. Identify essential statistical measures and determine them for experimental chemical data.
6. Effectively utilize databases for information retrieval.

Course Content:
The course encompasses the following topics:

- Fundamentals of programming in Python for chemical applications.
- Data processing and analysis: input-output, structuring, information retrieval.
- Visual representation of chemical data and functions in various dimensions.
- Molecular structure visualization using formats such as pdb, cif, etc.
- Introduction to statistical concepts and error analysis for chemical data.
- Practical application of curve fitting in chemical data analysis.
- Effective use of databases for information retrieval.

Teaching and Learning Method:
The course consists of a highly interactive weekly lecture and exercise session (4 contact hours per week), divided into thematic blocks. Each block commences with an introduction by Professor Helge S. Stein, followed by practical exercises where students apply and implement learned concepts. This incremental approach empowers students to learn at their own pace and progressively develop their skills. During exercises, students independently work on computers with guidance from the instructor. Additionally, voluntary tutorials are available for further support.

Media Formats:
The course employs various media, including:

- Jupyter Notebooks for interactive programming.
- Power-Point presentations for conveying concepts and theory.
- Exercise sheets (in the form of Jupyter Notebooks) for practical applications and exercises.
- Computer-based work to implement programming and data analysis.
- Interactive discussions and collaborative learning in both in-person and online environments.

This course offers a solid foundation in programming and data science to efficiently process, analyze, and interpret chemical data. Students will be equipped to utilize modern technological tools in their future studies and careers, advancing their data analysis skills. As one of the initial courses, we introduce students to data management in their first semester, nurturing a new generation of researchers skilled in generating and handling F.A.I.R. data from the outset. The acquired knowledge forms the basis for future laboratory automation, data-driven chemistry, and general machine learning and artificial intelligence. The course is explicitly designed for students of experimental, applied, and theoretical chemistry.


Tentative topics:

  1. Einführung in den Kurs und Software-Basis

    • Idee und Ziele des Kurses
    • Klarstellung der Erwartungen und Übersicht
    • Don't panic: Arbeiten mit Terminals, Editoren, Paketmanagern etc.
  2. Einführung in Python

    • Grundlagen der Python-Programmierung
    • Erste Schritte in Python und Umgang mit der Konsole
    • Verwendung von Skripten und Notebooks sowie ein wenig Markdown
  3. Elemente des Programmierens I

    • Basic Syntax, Datentypen und Variablen
    • Identifiers, Keywords, Operatoren und Ausdrücke
  4. Elemente des Programmierens II

    • Konditionale Ausdrücke (IF)
    • Listen und Schleifen, geschachtelte Schleifen
  5. Elemente des Programmierens III

    • Ein- und Ausgabe (I/O), Datenformatierung und Dateiausgabe
    • Datei parsen und Informationen extrahieren
  6. Visualisieren von Daten

    • Darstellung von X-y-Daten und Xyz-Daten
    • Optimale Darstellung mit Lin-Log-Plots und Achsenanpassungen
  7. Elemente des Programmierens IV

    • Matrix-Vektor-Multiplikation und Matrix-Operationen
    • Anwendung von Funktionen auf Stützstellen 1D und Ableitungen
  8. Lineare Algebra

    • Transformation von Vektoren, möglicherweise Rotationen
    • Anwendung auf chemische Strukturdaten
  9. Statistik I

    • Berechnung des Mittelwerts und der Standardabweichung
    • Vergleich zweier Datensätze, Berechnung des Medians
  10. Chemische Strukturdaten

    • Unterschiedliche Dateiformate (xyz, cif, pdb)
    • Öffnen, Ansehen und Manipulation von Strukturdateien mit JMol
  11. Maestro

    • Erstellen von Molekülen, Bindungstypen und Koordinatenaufbau
    • Herausschreiben von Koordinaten und Relaxierung mittels Kraftfeld
  12. Visualisieren von funktionellen Zusammenhängen

    • Sicheres Verwenden von Matplotlib zur Funktionenplotting
    • Plotten in 3D für komplexere Darstellungen
  13. Time Series & Fourier Transform

    • Verständnis von Zeit- und Frequenzsignalen
    • Konzept von Wellen und Fourier-Transformation
  14. Praktischer Umgang mit Chemiedatenbanken

    • Nutzung der Cambridge Structural Database
    • Extraktion von physiko-chemischen Daten
  15. Data Science und maschinelles Lernen

    • Einführung in z.B. Random Forests, Neuronale Netzwerke
    • Anwendung von QSAR-Methoden
    • Evaluierung von Modellen
    • Ideen und Daten für eigene Experimente
  16. Zusätzliche Ressource: Wolfram Alpha, LLMs

    • Einführung in die Nutzung von Wolfram Alpha und anderen für chemische Berechnungen und Datenabfragen