zum Inhalt springen

MN-GM-DATPRO

Basismodul: Datenverarbeitung und Programmieren
Kennnummer

MN-GM-
DATPRO
Workload

180 h
Leistungs-
punkte

6 LP
Studien-
semester

2. oder 3.
Semester
Häufigkeit des
Angebots

Jedes WiSe
Dauer

1 Semester
1 Lehrveranstaltungen
a) Vorlesung
b) Übung
Kontaktzeit
45 h
30 h
Selbststudium
45 h
60 h
geplante
Gruppengröße

24
2 Ziele des Moduls und zu erwerbende Kompetenzen

Die Studierenden sollen im Teil „Programmieren“ lernen, einfache bis mittelschwierige praktische Problemstellungen aus den Bereichen Mathematik, Physik, Geophysik und Meteorologie mit geeigneten Programmiermethoden zu lösen. Mit Fortran 95 und Python werden zwei Sprachen mit unterschiedlichen Schwerpunkten vermittelt (Fortran 95: Compilersprache für mathematisch-physikalisch-numerische Berechnungen und High-Performance Computing (HPC), Python: Interpretersprache mit vielen bereits vorgefertigten Modulen, u. a. auch zur Verarbeitung wissenschaftlicher Daten und zum Plotten). Daneben sollen die Studierenden im Teil „Datenverarbeitung“ lernen, wie moderne Computer aufgebaut sind und funktionieren. Als Synthese beider Teile endet das Modul mit einer Einführung in das Programmieren parallelisierter Anwendungen (u. a. mit MPI) sowie einem Überblick über häufig verwendete Datenstrukturen und deren Hauptanwendungsgebiete.

Den Studierenden sollen die folgende Kompetenzen vermittelt werden:
  • Geeignete Algorithmen zur Lösung von Problemstellungen aus den Bereichen Mathematik, Physik, Geophysik und Meteorologie zu finden
  • Algorithmen in den Programmiersprachen Python und Fortran 95 implementieren zu können
  • Methodenkompetenzen:
    • Auswahl der geeigneten Programmiersprache zur Lösung eines Problems
    • Auswahl eines geeigneten Algorithmus zur Lösung eines Problems
    • Auswahl der geeigneten Methode zur Parallelisierung von Programmen

Darüber hinaus werden allgemeine Kompetenzen gestärkt, wie z. B. :
  • Durchhaltevermögen
  • Selbständiges Arbeiten
  • Zeitmanagement und Projektplanung
  • Abstraktionsvermögen, konzeptionelles, analytisches und logisches Denken
3 Inhalte des Moduls

Datenverarbeitung
 
  1. Darstellung von Zahlen
    • 1.1 Ganzzahlen
    • 1.2 Negative Ganzzahlen
    • 1.3 Fließkommazahlen

  2. Rechnerhardware
    • 2.1 Aufbau einer CPU
    • 2.2 Aufbau eines Rechners, Zusammenspiel CPU, Hauptspeicher und Busse
    • 2.3 Interrupts, DMA, Busarbitrierung
    • 2.4 Caches

  3. Betriebssystemkern
    • 3.1 Aufbau des Unix-Kernels
    • 3.2 Virtuelle Adressen
    • 3.3 Multitasking
    • 3.4 Netzwerk (TCP/IP)
    • 3.5 Lokale Dateisysteme

  4. Symmetrisches Multi-Prozessing
    • 4.1 Hardware (Busarbitrierung, Cache Snooping)
    • 4.2 Betriebssystem (Locks, Multithreading)

  5. Ausgewählte Kapitel Computeranwendungen, zum Beispiel:
    • 5.1 Shells und Shell-Skripte
    • 5.2 Kryptographie

  6. Softwareentwicklung
    • 6.1 Software Validation and Verification
    • 6.2 Software Configuration Management
    • 6.3 Versionskontrolle mit RCS
    • 6.4 Make und Makefiles
Programmierung
 
  1. Programmieren in Fortran 95
    • 1.1 Entwicklung der Sprache Fortran, Kompatibilität zu früheren Versionen
    • 1.2 Typen, Variablen und Parameter
    • 1.3 Ausdrücke
    • 1.4 Programmsteuerung
    • 1.5 Ein- und Ausgabe
    • 1.6 Programmeinheiten (PROGRAM, FUNCTION, SUBROUTINE)
    • 1.7 Felder und Parallelisierung
    • 1.8 Objektorientiertes Programmieren (Module, benutzerdefinierte Typen und Operatoren, Überladen von Operatoren, Zuweisungen und Funktionen)
    • 1.9 Zeiger und dynamischer Speicher
    • 1.10 Zugang zur Numerischen Umgebung

  2. Programmieren in Python
    • 2.1 Syntax und Befehle zur Flußkontrolle
    • 2.2 Datentypen und Operatoren
    • 2.3 Routinen
    • 2.4 Objektorientierung, Erstellen von Klassen
    • 2.5 Verwendung von Modulen, eingebaute Module, Erstellen eigener Module
    • 2.6 Input und Output
    • 2.7 Ausnahmefehler und Assertions
    • 2.8 Iteratoren und Generatoren
    • 2.9 Überblick über die wichtigsten Python-Module für die Datenverarbeitung in der Geophysik und Meteorologie: Pandas, NumPy, SciPy, Matplotlib

  3. Parallelisieren
    • 3.1 Message Passing Interface (MPI)
    • 3.2 Parallelisieren in Python

  4. Datenstrukturen und Algorithmen
    • 4.1 Iteration und Rekursion
    • 4.2 Datenstrukturen (verkettete Listen, Bäume, Graphen etc.)
    • 4.3 Algorithmen (auf Datenstrukturen operierende, z. B. Binary Tree Sort)
4 Lehr- und Lernformen

Die theoretischen Inhalte werden in der Vorlesung vermittelt. In den Präsenzübungen wird das theoretisch Erlernte von den Studierenden unter Anleitung an praktischen Beispielen umgesetzt. An den Präsenzübungen besteht Teilnahmepflicht. Hausaufgaben (Übungen) dienen dem weiteren Selbststudium zum Vertiefen des Stoffes. Ein größeres Programmierprojekt kann auf mehrere Übungen aufgeteilt werden.
5 Modulvoraussetzungen

Formal: keine. In den Übungen werden häufig Anwendungen aus den Bereichen der Geophysik, Meteorologie, Physik und Mathematik programmiert. Gute Kenntnisse der Inhalte der Module der ersten beiden Semester des Studiengangs Geophysik und Meteorologie werden vorausgesetzt.
6 Form der Modulabschlussprüfung

Das Modul wird mit einer Klausur abgeschlossen. Zu Beginn des Folgesemesters wird eine Wiederholungsprüfung angeboten. Zulassungsvoraussetzung für die Klausur sind die bestandenen Übungen (mindestens 50 % der in den Übungen zu erreichenden Punkte sind erforderlich).
7 Voraussetzungen für die Vergabe von Leistungspunkten

Bestandene Übungen (mindestens 50 % der in den Übungen zu erreichenden Punkte sind erforderlich) sowie eine bestandene Klausur.
8 Verwendung des Moduls (in anderen Studiengängen)

Das Modul kann in anderen mathematisch-naturwissenschaftlichen Fächern als Grundlagenmodul zur Vermittlung von Kenntnissen in Datenverarbeitung und Programmieren verwendet werden.
9 Stellenwert der Modulnote für die Fachnote

Gewicht von 6/180
10 Modulbeauftragte/r

A. Wennmacher
11 Sonstige Informationen

Der Präsenzteil der Übungen findet im CIP-Raum an Linux-Computern statt. Eigene (Unix-basierte) Computer (Linux, Mac OS) können gerne verwendet werden.