Digicampus
Vorlesung + Übung: Einführung in die Algorithmische Mathematik und Informatik - Details
Sie sind nicht in Stud.IP angemeldet.
Lehrveranstaltung wird in Präsenz abgehalten.

Allgemeine Informationen

Veranstaltungsname Vorlesung + Übung: Einführung in die Algorithmische Mathematik und Informatik
Veranstaltungsnummer MTH-4200
Semester WS 2024/25
Aktuelle Anzahl der Teilnehmenden 0
Heimat-Einrichtung High-Performance Scientific Computing
Veranstaltungstyp Vorlesung + Übung in der Kategorie Lehre
Nächster Termin Montag, 14.10.2024 15:45 - 17:15, Ort: (T 1003)
Online/Digitale Veranstaltung Veranstaltung wird in Präsenz abgehalten.
Hauptunterrichtssprache deutsch

Räume und Zeiten

(T 1003)
Montag: 15:45 - 17:15, wöchentlich (1x)
Keine Raumangabe
Montag: 15:45 - 17:15, wöchentlich
Dienstag: 12:15 - 13:45, wöchentlich
(L 1005)
Dienstag: 12:15 - 13:45, wöchentlich (1x)

Kommentar/Beschreibung

# Inhaltsübersicht

* Allgemein
* Ziele der Vorlesung und Voraussetzungen
* Zum Ablauf der Vorlesung
* Zum Ablauf der Übungen
* Zur Klausur
* Allgemeine Tipps an die Studentinnen und Studenten

# Allgemein

In dieser Vorlesung wird als Einstieg in die Datenwissenschaften vermittelt, wie man wissenschaftliche Probleme mit dem Rechner löst. Die Vorlesung bietet eine Einführung in folgende Themenbereiche:
1. Grundlagen der Programmierung in C
2. Programmierparadigmen und Konzepte der imperativen Programmierung
3. Datenstrukturen (statische / dynamische / mehrdimensionale)
4. Informationsdarstellung (Zahlensysteme, Komplementdarstellungen ganzer Zahlen, Fließkommadarstellungen von Dezimalzahlen, ASCII-Zeichen)
5. Algorithmen (Entwurf, Rekursion, Korrektheit, Zeitkomplexität / O-Notation)
6. Mathematische Konzepte und Beweistechniken
7. Grundlagen der diskreten Graphentheorie
8. Programmieren in Python
9. Einführung in Inverse Probleme
8. Lösung von inversen Problemen mittels Python Programmbibliotheken

Diese Vorlesung ist Voraussetzung für alle weiteren Veranstaltungen.

# Ziele der Vorlesung und Voraussetzungen

* Grundlage:
* Programmierkenntnisse aus Vorkurs Informatik (oder gleichwertige Vorerfahrung).
* Vorkurs kann jetzt noch digital nachgeholt werden!
* Parallel: Wissen aus den Vorlesungen Analysis I und Linear Algebra I

* Lernziele
* Allgemein: " ... die wesentlichen Konzepte aus Informatik und Mathematik"
* bzgl. Mathematik: "Anwendung grundsätzlicher mathematischer Konzepte auf Beispiele und deren Implementierung in einer Programiersprache"
* bzgl. Informatik: grundlegende Konzepte der Programmierung in C und Python.
* Warum C und Python?
* C und Python sind portabel und weit verbreitet.
* C ist eine Low-Level-Sprache und bietet eine hohe Leistungsfähigkeit.
* Python ist weit verbreitet im Bereich Data Science (s.u.)
* Erlernen der Unterschiede zw. einer kompilierten (C) vs. interpretierten Sprache (Python)
* Hauptanwendungsgebiete von C: Systemprogrammierung, Embedded Systems (eingebettete Systeme), Spielentwicklung, Compiler und Interpreter, Netzwerkanwendungen. Mikrocontroller-Programmierung Telemetrie und Embedded-Steuerungen
* Hauptanwendungsgebiete von Python: Webentwicklung, Datenanalyse und Data Science, Künstliche Intelligenz (KI) und maschinelles Lernen (ML), Automatisierung und Skripting, Wissenschaftliche Berechnungen und Forschung

# Zum Ablauf der Vorlesung

* Montag, 15:45 - 17:15 (1003 T) **und** Dienstag, 12:15 - 13:45 (1005 L)
* Regelmäßige Teilnahme ist wichtig, damit man nicht den Anschluss verliert
* Kommunikationsplattform: Digicampus
* Fragen und Kommentare gerne ins Forum (sichtbar für alle)
* direkte Email nur in Ausnahmefällen
* Mathematikteil: Vorlesungsmaterialien werden vor Vorlesung im Bereich "Dateien" zur Verfügung gestellt
* Allgemein: dran bleiben und nicht zwischendurch pausieren
* kontinuierlich Vor- und Nachbereiten

# Zum Ablauf der Übungen
TBD.

## Wie und wo programmiere ich?
* Im Jupyther-Hub:
* URL: https://bioinf-jupyter.informatik.uni-augsburg.de/hub
* Für den Zugriff muss man sich im Uni-Netz befinden bzw. per VPN mit der Uni verbunden sein.
* Kurzanleitung für Studierende: https://bioinf-nextcloud.informatik.uni-augsburg.de/s/howToJupyter
* Sie müssen im Jupyther-Hub mit Ihrer RZ-Kennung registriert sein. Das haben wir für die bisher für die Übungsgruppen angemeldeten Studentinnen und Studenten bereits erledigt. Etwaige Nachzügler müssen wir noch freischalten.
* Falls der Jupyther-Hub mal aus technischen Gründen mal nicht gehen sollte, kompilieren Sie Ihre Programme lokal auf Ihrem Rechner (s. Einführungsveranstaltung). Es steht Ihnen frei wie Sie es machen.
* Alternativen zm Jupyther-Hub: lokale Jupyther-Instanz auf eigenem Notebook oder lokale IDE (z.B. IDE CODE:BLOCKS, CLION von Jetbrains oder klassisch d.h. Texteditor+Terminal)
* bitte niemals Programmcode in MS Office bearbeiten, sondern nur in Texteditoren

# Zur Klausur

Die Klausur findet voraussichtlich in der der ersten Woche der vorlesungsfreien Zeit statt. Der genaue Termin wird im Laufe des Semesters noch bekanntgegeben.

# Allgemeine Tipps an die Studentinnen und Studenten

* Interaktion
* Tipp: untereinander Lerngruppen bilden
* Tipp: mit den Dozenten interagieren (die Vorlesung sollte kein Monolog sein)

## Bzgl. des Informatikteils

* Optional: Überlegen Sie sich abseits der Übungen ein kleines, aber konkretes Programmierprojekt und entwickeln Sie es eigenständig. Durch die Entwicklung eines eigenen Programms erlernt man Konzepte meist deutlich schneller als wenn wenn man nur ausschließlich die (wichtigen) Übungen löst. Wenn Sie dabei sogar arbeitsteilig arbeiten--d.h. mehrere Studenten/Studentinnen entwickeln einzelne Teile wie z.B. Funktionen eines Programms und fügen es später zusammen--erlangen Sie dabei auch wichtige koordinative Fähigkeiten, die Ihnen später in größeren Softwareentwicklungsprojekten zu Gute kommen werden.
* Programmkonzept überlegen: um etwaige Programmierhemmungen zu überwinden, empfiehlt es sich erstmal ein Konzept des Programms d.h. einen groben Ablauf festzulegen ("Was soll mein Programm können?") und aufzuschreiben. Sie können diesen groben Ablauf z.B. in Form von Kommentaren in ihre Quellcodedatei einfügen und sich daran orientieren und schrittweise ausprogrammieren.
* Eigenständigkeit: Sie sollten unabhängig vom Jupyther-Hub in der Lage sein ihre eigene Entwicklungsumgebung (IDE) aufzusetzen und Code kompilieren zu können (z.B. mit gcc).
* Code-Kommentierung: Orientieren Sie sich an dem Leitspruch: "The closer a comment is to spoken language and the further a comment is from C code, the better the comment is"
* Verwenden Sie gute Code-Konventionen, d.h. Strukturieren Sie Ihren Code gut.
* Gute Code-Konventionen für C: https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html
* Gute Code-Konventionen für Python: https://docs.python-guide.org/writing/style/
* Bücherempfehlungen:
* Wenn die Zeit es zulässt, empfiehlt es sich zusätzlich zur Vorlesung noch ein gut strukturiertes Buch oder Webresource zum Thema zu lesen.
* Für den Programmierteil "C" ist u.a. folgendes Buch empfehlenswert:
* "C Programming Absolute Beginner's Guide", (English Edition), 3. Auflage, Autoren: Greg Perry und Dean Miller
* Für den Pythonteil kann man folgende Quelle konsultieren:
* https://realpython.com/learning-paths/