Inhaltspezifische Aktionen

Priv.-Doz. Dr. Mellau

DataScience, Molekülphysik & Spektroskopie

English version below

Data Science I

Diese Vorlesung ist eine Einführung in Python und richtet sich an Studierende der Naturwissenschaften.  Für diese Studenten ist es eine große Herausforderung, gleichzeitig Physiker oder Chemiker und Data-Science-Spezialist zu werden, da das Hauptziel ihres Studiums darin besteht, Physiker oder Chemiker und nicht Informatiker zu werden. Ich habe eine Vorlesungsstruktur für Data Science entwickelt, die diesen wichtigen Aspekt berücksichtigt. Die Vorlesung beginnt bei "Null", da viele meiner Studierenden noch nie ein Programm geschrieben haben und keine Ahnung haben, wie ein Programm funktioniert.  Die Ideen, die notwendig sind, um Programme zu verstehen und zu schreiben, werden Schritt für Schritt eingeführt, wobei zunächst Python als prozedurales Programmiersystem verwendet wird.  Wir konzentrieren uns auf die wichtigsten Ideen und Syntaxelemente, so dass viele Aspekte, die normalerweise Vorlesungen füllen, während der praktischen Arbeit mit der Online-Dokumentation entdeckt werden können.  Nachdem die Studierenden gelernt haben, einfache Programme zu schreiben, beginnen wir mit Anwendungen zur Datenanalyse, die Chemiestudierende in ihrer täglichen Forschungsarbeit benötigen. In diesem Teil der Vorlesung verwende ich einige Datensätze, die sich auf die chemischen und technischen Aspekte des Klimawandels beziehen. Die Projekte, die die Studierenden am Ende des Kurses für ihre Note entwickeln müssen, beziehen sich ebenfalls auf dieses Problem.  Ich bin ein Lehrer der alten Schule, der viel mit Kreide und Tafel arbeitet, so dass die Vorlesungsunterlagen eigentlich nur einen Teil des Stoffes abdecken. Einer dieser wichtigen Aspekte ist es, die Gemeinsamkeiten und Unterschiede zwischen verschiedenen Programmiersprachen zu lernen. Während des Kurses lernen wir diesen Aspekt für das Mathematica-System und die Programmiersprache Swift.

  • Programmieren mit Python für Studierende ohne Programmiererfahrung, prozedurale Programmiertechniken

- Das erste Programm

- Boolesche Daten und die Schlüsselwörter True/False

- Speichern von Text als Daten in Computerprogrammen

- Das Konzept des Datentyps

- Methoden

- if, if/else und if/elif/else Konstrukte

  • Python Listen vom Typ list

- Initialisierung einer Python-Liste

- Indizierung von Python-Listen - Auslesen/Ersetzen des i-ten Elements

- Globale Funktionen und Operatoren für Listen

- Syntax eines Bereichs von Elementen - Der Datentyp slice

- Methoden der Phyton-Liste

- Das Tupel als Gruppe von Datenelementen

  • Python-Programmschleifen

- Die while-Schleife

- Gezählte Schleifen: die for-Schleife

- break-Unterbrechung einer Schleife und das for/else-Konstrukt

- for ... in automatisch iterierte Schleife für Listen

- Python Listen-Abstraktion

- while-Schleife oder for-Schleife?

  • Python-Funktionen

- Definition von Funktionen (Teil 1)

- Eine Liste oder ein Tupel in Funktionsargumente umwandeln

  • Namensräume und Module

- Namensräume

- Python Module

- Pakete und importieren von Untermodulen

  • Fortgeschrittene Funktionalität der Programmiersprache Python

- Bezeichner und Objekte

- Veränderliche und unveränderliche vs. Werttyp- und Zeigertyp-Objekte

- Operatoren

- Iteration über Objekte

- Was ist zu tun, wenn das Programm auf einen Fehler stösst?

- Set

- Dictionary

  • Strukturierte Datensätze in Python

- Objekte vom Typ class in Python

- Methoden der Klassenobjekte in Python

- Klassenattribute

- Objektorientiertes Programmieren

- Methode der übergeordneten Klasse aufrufen

  • Mehr zu Funktionen in Python

- Übergabe als Referenzargument

- Funktionsüberladung

  • Numpy und SciPy Module

Grundlagen der Dateiverarbeitung mit Python

  • Grundlagen der Datenanalyse

- Simulation gemessener Datensätze

- Eine Menge von Datenpunkten plotten

- Ein Histogramm mit Python erstellen

  • Anpassung nichtlinearer Modelle mit Python

- Grundlagen der Kurvenanpassung

- Visualisierung der Kurvenanpassung

- Herunterladen von Datensätzen aus dem Internet mit einem Python-Programm

- Import von csv-Datensätzen

- Anpassung nichtlinearer mehrdimensionaler Modelle: die Keeling-Kurve

- Wenn eine nichtlineare Anpassung fehlschlägt

- Die Anpassungsschritte des Levenberg-Marquardt-Algorithmus

  • Optimierung und Wurzelfindung

- Das Problem der Minimumsuche

- Das Problem des globalen vs. lokalen Minimums

- Visualisierung des Parameterraums mit Konturplots

- Visualisierung des Parameterraums mit 3D plots

- Kurvenanpassung als Minimumsuche

- Problem der Fehlanpassung vs. Topologie des Parameterraums

  • Gewichtete Anpassung

Molekülsymmetrie und Spektroskopie

  • Mathematische Grundlagen I: Einführung in die Algebra (Grundlagen, Abbildung, Verknüpfung, Verknüpfungstafel, Gruppe, Isomorphismus, Äquivalenzklassen, Permutationen)
  • Mathematische Grundlagen II: Matrizen (Blockdiagonalmatrix, Determinante, Eigenwertproblem und geometrische Deutung, Diagonalisierbarkeit, Eigenräume, Drehmatrix, Spiegelungsmatrix)
  • Spektroskopische Methoden (Elektromagnetische Strahlung, Strahlungsdetektoren, Aufbau von Spektrometern, FT-Spektrometer)
  • Punktgruppen (Symmetrieelemente und -operationen, Rotationsgruppe, Punktgruppe, Schönflies-Nomenklatur)
  • Darstellungstheorie (irreduzible Darstellung, Darstellungstafel, Charaktertafel, direktes Produkt)
  • Rotationsspektroskopie (Hauptachsensystem und der starre, mehratomige Rotator, Rotationszustände)
  • Schwingungsspektroskopie (Normalschwingungen, GF-Berechnung, lokalisierte Schwingungen, Auswahlregeln)

Data Science I

This lecture is an introduction to Python and is aimed for science students. Becoming a physicist or chemist and a data science specialist at the same time is a big challenge for these students, since the main goal of their studies is to become a physicist or chemist and not a computer scientist.I have developed a lecture structure for Data Science that takes this important aspect into account. The lecture starts from "zero" as many of my students have never written a programme before and have no idea how a programme works.  The ideas needed to understand and write programmes are introduced step by step, starting with Python as a procedural programming system.  We focus on the most important ideas and syntax elements, so that many aspects that normally fill lectures can be discovered through hands-on work with the online documentation.  After the students have learnt to write simple programs, we start with applications for data analysis that chemistry students need in their daily research. In this part of the lecture, I use some data sets related to the chemical and engineering aspects of climate change. The projects that the students have to develop at the end of the course for their grade are also related to this problem.  I am an old-school teacher who works a lot with chalk and blackboard, so the lecture notes really only cover part of the material. One of those important aspects is learning the similarities and differences between different programming languages. During the course we learn this aspect for the Mathematica system and the Swift programming language.

  • Programming with Python for students without programming experience, procedural programming techniques

- The first program

- Boolean data and the True/False keywords

- Storing text as data in computer programs

- The concept of data type

- Methods

- if, if/else and if/ elif/else constructs

  • Python list type lists

- Initialisation of a Python list

- Indexing Python lists - reading/replacing the 'i'-th element

- Global functions and operators for lists

- Syntax of a range of elements - The 'slice' data type

- Methods of the Phyton list

- The tuple as a group of data items

  • Python program loops

- The while loop

- Counted loops: the for loop

- break interruption of a loop and the for/else construct

- for ... in automatically iterated loop for lists

- Python list comprehension

- while loop or for loop ?

  • Python functions

- Definition of functions (Part 1)

- Convert a list or tuple to function arguments

  • Namensräume und Module

- Name spaces

- Python module

- Packages and importing submodules

  • Advanced features of the Python programming language

- Identifiers and Objects

- Mutable and immutable vs value type and pointer type objects

- Operators

- Iterate over objects

- What to do if the program encounters an error ?

- Set

- Dictionary

  • Structured data sets in Python

- class type objects in Python

- Methods of class objects in Python

- Class attributes

- Object oriented programming

- Calling parent class method

  • More about funtions in Python

- Pass by reference

- Function overloading

  • Numpy and SciPy modules

Grundlagen der Dateiverarbeitung mit Python

  • Basics of data analysis

- How to simulate measured data sets

- Plot a set of data points

- Create a histogram with Python

  • Fitting non-linear models with Python

- Curve fitting basics

- Visualisation of a curve fit

- Download of data sets from the Internet with a Python program

- Import of csv data sets

- Fitting nonlinear multidimensional models: the Keeling curve

- Nonlinear fit failure

- The fitting steps of the Levenberg-Marquardt algorithm

  • Optimization and root finding

- The problem of minimum search

- The problem of the global vs. local minimum

- Visualisation of the parameter space with contour plots

- Visualisierung des Parameterraums mit 3D plots

- Curve fitting as minimum search

- Failed fit problem vs. topology of parameter space

  • Weighted fit