Lecture: Einführung in die Algorithmische Mathematik und Informatik - Details

Lecture: Einführung in die Algorithmische Mathematik und Informatik - Details

You are not logged into Stud.IP.

General information

Course name Lecture: Einführung in die Algorithmische Mathematik und Informatik
Course number MTH-4200
Semester WS 2023/24
Current number of participants 22
Home institute Inverse Probleme
Courses type Lecture in category Teaching
First date Tuesday, 17.10.2023 10:00 - 11:30
Veranstaltung findet in Präsenz statt / hat Präsenz-Bestandteile Yes
Hauptunterrichtssprache deutsch

Rooms and times

No room preference
Tuesday: 10:00 - 11:30, weekly
Thursday: 10:00 - 11:30, weekly

Comment/Description

# 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

* Dienstags, 10:00 - 11:30 (1007 L) **und** Donnerstags, 10:00 - 11:30 (1007 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

* Wo und wann: Dienstags, 17:30 - 19:00 (2001 T)
* Wie: Im Übungssystem eintragen
* Erste Übung in Woche vom 23. Oktober
* AUSGABE der Übungsblätter: Wöchentlich und zwar am Dienstag auf Digicampus (entweder kurz vor oder nach der Vorlesung)
* ABGABE der Übungsblätter: Sie haben für die Bearbeitung des Blattes eines Woche Zeit und sollten es SPÄTESTENS bis zum jeweils nächsten Dienstag um 9 Uhr auf Digicampus hochgeladen haben unter der Veranstaltung Übung Algorithmische Mathematik und Informatik, Di 17:30 Uhr " (Link: https://digicampus.uni-augsburg.de/dispatch.php/course/details?sem_id=5809d20be5c95f58f4153a488d2dd895&again=yes ) und zwar in der Rubrik "Dateien" -> "Abgabe der Übungsblätter" -> "Abgabe-Übungsblatt-xyz"
* Bewertung der Übungsblätter: Die Tutoren/Tutorinnen werden Ihre Abgabe prüfen und die Anzahl der korrekt beantworteten Aufgaben dokumentieren. Wenn Sie in einem Übungsblatt mindestens 50% der Aufgaben korrekt beantwortet haben, bekommen Sie 1 Bonuspunkt gutgeschrieben, der später in der Klausur angerechnet wird. Es können über alle Übungsblätter so maximal 8 Bonuspunkte erlangt werden und zwar max. 4 Bonuspunkte für den Informatikteil der Vorlesung (Programmieren in C und Python) und max. 4 Bonuspunkte für den Mathematikteil
* Die Bearbeitung und Abgabe kann alleine oder in Zweiergruppen erfolgen. Letzteres ist allerdings empfohlen.
* Regelmäßige Teilnahme ist auch hier wichtig, um nicht den Anschluss zu verlieren
* In der in Präsenz abgehaltenen Übung: Besprechung der Lösung und ggf. eine unterstützende Programmieraufgabe. Raum für allgemeine Fragen ist hier auch gegeben.
* Regelmäßiges Programmieren ist notwendig (zum Bestehen der Klausur und weil Sie es später brauchen werden)

## 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 (ab 12.02.). 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/