Dr. D. Komm, Dr. H.-J. Böckenhauer — Departement Informatik — HS 2020
Digitale Medizin I: Einführung in die Programmierung
Inhalt
Diese Veranstaltung verfolgt zwei Ziele. Zum einen wird am Beispiel von Python eine Einführung in die Programmierung gegeben, in der die grundlegenden Konzepte der Programmierung wie Wahrheitswerte, Variablen, Datentypen, Bedingungsprüfungen, Schleifen und Funktionen vorgestellt werden.
Zum anderen werden die grundlegenden Datenstrukturen (wie Stacks, Queues und Suchbäume) und wichtige Ideen des Algorithmenentwurfs vorgestellt und in Python implementiert, um auf diesen Datenstrukturen grundlegende algorithmische Aufgaben effizient zu lösen.
Ein Schwerpunkt liegt dabei auf allgemein einsetzbaren Entwurfsmethoden für effiziente Algorithmen wie Greedy-Verfahren, dynamische Programmierung oder Divide-and-Conquer-Strategien, die mit vielen praxisnahen Beispielen vorgestellt werden.
Informationen zur Prüfung
- Die Prüfung findet statt am 10. Dezember um 8:15 Uhr
- Die Prüfungszeit beträgt 60 Minuten
- Die Teilnahme ist obligatorisch
- Sie werden die Prüfung als PDF erhalten, welches Sie auf dem Bildschirm betrachten können
- Sie sind gleichzeitig per Zoom verbunden und Ihre Webcam ist aktiviert
- Die Prüfung wird mit Stift und Papier bearbeitet
- Es sind keine weiteren Hilfsmittel erlaubt
- Sie scannen Ihre Lösung mit Ihrem Smartphone ein und schicken sie uns per Mail
- Weitere Informationen zum Prüfungsmodus finden Sie hier.
- Beachten Sie auch unbedingt den hier verlinkten Leitfaden.
Probeprüfung
Am 3. Dezember, also eine Woche vor der Prüfung, fand eine Probeprüfung statt.
Inhalt der Prüfung
Die folgende Liste gibt eine Übersicht über wesentliche Begriffe und Konzepte hinsichtlich einer Vorbereitung auf die Prüfung am Ende der Vorlesung.
Sie erhebt keinen Anspruch auf Vollständigkeit.
- Grundbefehle von Python
- Grundlagen der vorgestellten Algorithmen und deren Komplexität
- Arithmetische Grundoperationen wie % und //
- Speichern und Verwalten von Daten in einfachen Variablen, Listen und Strings
- Funktionsweise und Verwendung von List-Comprehensions
- Funktionsweise und Verwendung von 2- und mehrdimensionalen Listen
- Funktionsweise und Verwendung von Stacks und Queues
- if-elif-else-Kontrollstrukturen und Boolesche Ausdrücke
- while-Schleifen und break
- for-Schleifen mit Listen-Elementen und Indizes mit range()
- Komplexität von gegebenen Programmen, z.B. mit verschachtelten Schleifen, in O-Notation angeben
- Funktionen und Rückgabe mit return
- Globale und lokale Variablen, Scope, Lifetime und Shadowing
- Das Konzept von Divide-and-Conquer
Es werden keine Fragen zu den Modulen numpy, matplotlib und pandas gestellt.
Beispielaufgaben für die Prüfung
Die Aufgaben der Prüfung können jeweils mit wenig Text beantwortet werden. Es wird verschiedene Aufgabentypen geben, die im Folgenden besprochen werden. Im Wesentlichen geht es darum, dass Sie Code lesen und seine Funktionalität verstehen können. Dies bedeutet, dass Sie beispielsweise angeben sollen, was ein gezeigtes Programm ausgibt, oder Fehler in diesem finden sollen. Auch wird es Programme geben, die Lücken enthalten, die Sie ergänzen sollen. Für andere Programme werden Sie nach oberen Schranken für die Komplexität in O-Notation gefragt. Es können auch inhaltliche Fragen kommen, in denen Sie in zwei bis drei Sätzen zeigen sollen, dass Sie ein in der Vorlesung besprochenes Verfahren bzw. einen Algorithmus verstanden haben, z.B. im Zusammenhang mit Suchen und Sortieren.
Auch die folgende Liste erhebt keinen Anspruch auf Vollständigkeit.
Aufgaben-Typ 1 (Code nachvollziehen und Ausgabe angeben).
Betrachten Sie folgenden Code.
2
3
4
5
6
7
8
9
10
11
12
Aufgaben-Typ 2 (Code und Lückentexte).
Die folgende Funktion reverse_list
soll die Reihenfolge der Elemente einer Liste data vertauschen.
2
3
4
5
6
7
Aufgaben-Typ 3 (Fehlersuche).
Die folgende Funktion enthält einen Fehler. Sie soll die Summe aller Zahlen einer Liste berechnen oder -1 zurückgeben, falls die Liste leer ist.
2
3
4
5
6
7
8
Aufgaben-Typ 4 (Komplexität).
Betrachten Sie die folgende Funktion, die 3n für eine gegebene natürliche Zahl n berechnet.
2
3
4
5
6
7
Aufgaben-Typ 5 (Inhaltliche Fragen).
Wir wollen die folgende Liste mit Bubblesort sortieren:
- Stellen Sie die erste Bubble-Sequenz dar, indem Sie angeben, wie die Liste jeweils nach den einzelnen Schritten der inneren Schleife aussieht.
- Was gilt nach dieser ersten Bubble-Sequenz?
- Wie ist die Komplexität von Bubblesort auf Listen mit n Elementen?
- Macht es für die Anzahl der Vergleiche einen Unterschied, ob die Liste bereits sortiert ist?
- Macht es für die Anzahl der Vertauschungen einen Unterschied, ob die Liste bereits sortiert ist?
Organisation
Ab dem 29.10. wird die Vorlesung als Distanzunterricht per Zoom durchgeführt. Den Link zur Vorlesung haben alle Studierenden per E-Mail erhalten.
- Die Vorlesung findet donnerstags von 8–10 Uhr statt.
Beachten Sie: Am 5. November findet keine Vorlesung statt, dafür am Mittwoch, dem 21. Oktober, von 14–16 Uhr. - Für Fragen stehen Ihnen die Assistierenden
- dienstags von 10–12 Uhr und
- donnerstags von 10–12 Uhr
- Details zur Prüfung werden hier rechtzeitig bekanntgegeben.
Übungsbetrieb
Während des Semesters erhalten Sie kleinere Projekte, die Sie selbstständig bearbeiten sollen. Die Ergebnisse präsentieren Sie während der Übungsstunden einer bzw. einem Assistierenden. Dies geschieht online per Zoom. Bitte stellen Sie sicher, dass Sie dieses installiert haben und es nutzen können.
Sie erhalten Feedback zu Ihrer Präsentation, jedoch fliesst die Bewertung nicht in die Endnote ein. Das Bearbeiten der Projekte ist dennoch obligatorisch, allerdings müssen Sie nicht zu den Übungssessions erscheinen; diese sind gedacht, um allfällige Fragen zu beantworten und die Projektpräsentationen online durchzuführen.
Für die Präsentationen werden Sie sich über das PELE-System anmelden. Die Präsentationen können in Zweiergruppen gehalten werden und dauern ca. 15 Minuten.
- Projekt 1: Monoalphabetische Verschlüsselung, Veröffentlichung am 15.10., Abgabe bis 29.10.
- Projekt 2: Arbeiten mit Listen, Veröffentlichung am 29.10., Abgabe bis 18.11.
- Projekt 3: Fallzahlen-Analyse der aktuellen Covid-19-Pandemie, Veröffentlichung am 18.11., Abgabe bis 17.12.
Agenda und Material
An dieser Stelle werden konkrete Informationen zum Vorlesungsinhalt veröffentlicht. Die Informationen werden während des Semesters laufend aktualisiert.
Datum, Raum | Inhalt | Unterlagen |
---|---|---|
01.10.2020, HG F 3 |
|
E.Tutorials Slides Handout Video |
08.10.2020, HG F 3 |
|
Slides Handout Video |
15.10.2020, HG F 3 |
|
Slides Handout Video Algorithmen |
21.10.2020, HG F 5 |
|
Slides Handout Video Algorithmen |
22.10.2020, HG F 3 |
|
Slides Handout Video Algorithmen |
29.10.2020, Online |
|
Slides Handout Video Algorithmen |
12.11.2020, Online |
|
Slides Handout Video Algorithmen |
19.11.2020, Online |
|
Slides Handout Video Algorithmen |
26.11.2020, Online |
|
Slides Handout Video Algorithmen |
03.12.2020, Online |
|
Slides Handout Video Algorithmen |
10.12.2020, Online |
|
|
17.12.2020, Online |
|
Slides Handout Video Algorithmen |