Einführung in die Programmierung
Vorlesung
Dozent | Prof. Dr. Peter Thiemann | thiemann@info... |
Übungen | Hannes Saffrich | saffrich@info... |
Michael Uhl | uhlm@info... |
Zeit | Di 10:15-11:45 Uhr, Mi 12:15-13:00 Uhr |
Ort | Geb. 101, Hörsaal 00-026 und gleichzeitig Livestream (YouTube) mit Aufzeichnung |
Klausureinsicht
- Die Klausureinsicht findet am 25.04. von 14-16 Uhr in der Werthmannstr. 4 statt (PC Pool 3).
Zusätzliche Tutorate
- Zusätzliche Online-Tutorate finden am 9.02. (Thema: Bäume und Rekursion, Tutor: Benke Hargitai, Zeit: 10-12 Uhr, Link) und 10.02 (Thema: Generatoren, Tutor: Julius Bredemeyer, Zeit: 10-12 Uhr, Link) statt.
Klausur
Die Klausur findet am Donnerstag den 16.2.2023, zwischen 11:30 und 16 Uhr in den Poolräumen der Werthmannstraße 4 bzw. im Rechenzentrum (Herman-Herder-Str. 10) in zwei Schichten statt. Jeder Prüfling erhält einen individuellen Termin (entweder "Rechenzentrum Beginn xxx" oder "Werthmannstraße 4 Beginn xxx"), der über diesen Link verfügbar ist. Bei Problemen siehe Frage 1 unter Fragen und Antworten zur Klausur
Letzter Einlass zur Klausur ist die Startzeit aus Ihrem Termin. Daher sollten Sie sich spätestens 30 Minuten vor der Startzeit am Klausurort einfinden.
- Werthmannstr. 4
- Der Einlass erfolgt über den Hinterhof. Zugang durch das Tor an der Belfortstr. 14.
- Rechenzentrum
- Warten Sie an der rechten Treppe vor dem Haupteingang.
Bitte mitbringen: Studierendenausweis, Lichtbildausweis, Uni/Ilias Accountnummer nebst zugehörigem Passwort.
- Die Verwendung von Handy, Tablett o.ä. in den Prüfungsräumen betrachten wir als Täuschungsversuch. Diese Geräte müssen vor dem Betreten und bis zum Verlassen der Gebäude ausgeschaltet und nach Anweisung der Aufsicht verstaut sein.
- Sie können sich bis zum 12.2., 23:59 online mit der Umgebung (Ubuntu mit Visual Studio Code) vertraut machen, die Sie auch in der Klausur erwarten wird. Diese Umgebung ist unter https://bwlehrpool.ruf.uni-freiburg.de/ verfügbar. Loggen Sie sich dort mit Ihrem Uni-Account ein und wählen die Veranstaltung "Informatik WS Exam" aus. Dieser Online-Zugang ist auf fünf gleichzeitige Sitzungen beschränkt. Alternativ können Sie die Umgebung in allen Poolräumen des Rechenzentrums und der Werthmannstr. 4 ausprobieren.
Weitere Hinweise zur Klausur
- Für die Bearbeitung der Aufgaben haben Sie 120 Minuten Zeit.
- Es sind keine Hilfsmittel wie Skripte, Bücher, Notizen oder Taschenrechner erlaubt. Desweiteren sind alle elektronischen Geräte (wie z.B. Handys) auszuschalten. Ausnahme: Fremdsprachige Wörterbücher sind erlaubt.
- Falls Sie mehrere Lösungsansätze für eine Aufgabe erarbeiten, markieren Sie deutlich, welcher gewertet werden soll. Die im Aufgabentext benannte "Zielfunktion" darf nur einmal in der Abgabe definiert werden, alles andere muss auskommentiert oder gelöscht werden. Andernfalls können wir keine Punkte vergeben.
- Verwenden Sie Typannotationen um die Typen der Parameter und des Rückgabewertes Ihrer Funktionen anzugeben. Fehlende Typannotationen führen zu Punktabzug.
- Bearbeiten Sie die einzelnen Aufgaben in den vorgegebenen Musterdateien, z.B. ex1_sequences.py. Falsch benannte Funktionen werden nicht bewertet. Neu erstellte Dateien werden nicht bewertet.
- Die Zielfunktionen sollen ihre Eingaben nicht verändern, d.h. Methoden wie
remove
dürfen nicht auf die Eingaben angewendet werden. Intern darf Ihre Implementierung den vollen Sprachumfang verwenden; es sei denn die Aufgabenstellung schließt etwas aus. Sie sollen prinzipiell keine Module importieren, die wir nicht explizit in der Aufgabenstellung benennen. Diese werden auch in den Musterdateien importiert. Zum Lösen der Aufgaben sind keine weiteren Importe/Module notwendig.
Achtung
- Am Di, den 17.1., und Mi, den 18.1., findet die Vorlesung nur online statt. Die Aufzeichnung dazu (aus dem WS2021/22) ist bereits online. Ab dem 24.1. wieder live aus dem Hörsaal.
- Aufgrund eines Stromausfalls am 17.12. (betroffen waren der git-Server für die Code-Abgabe + der Vorlesungs-Chat) wurde die Abgabefrist für Blatt 9 um einen Tag verlängert.
- Am Mi, den 14.12., findet die Vorlesung wetterbedingt nur online statt.
- Am Di, den 6.12., und Mi, den 7.12., findet die Vorlesung nur online statt. Die Aufzeichnung dazu (aus dem WS2021/22) ist bereits online. Ab dem 13.12. wieder live aus dem Hörsaal.
Klausur
Die Prüfungsklausur findet am Donnerstag, den 16.02.2023, im Zeitraum von 8-17 Uhr in den Poolräumen der Universität am Rechenzentrum und in der Werthmannstr. 4 statt. Die Klausur wird in mehreren Gruppen und in mehreren Räumen gleichzeitig geschrieben, sodass jeder Teilnehmer einen individuellen Prüfungstermin hat. Genaue Information (Ort und Zeit) erhalten Sie spätestens zwei Tage vor der Prüfung. Bei Terminkonflikten mit einer anderen Prüfung am gleichen Tag kontaktieren Sie uns bitte im Vorfeld.
Materialien
Die Vorlesung orientiert sich an der Informatik 1 Vorlesung des vorherigen Wintersemesters (Link).
Der Link zum Livestream wird jeweils am Vorabend der Vorlesung hier veröffentlicht.
Wichtig: Aktuell liegen 455 Anmeldungen vor, aber unser Hörsaal hat lediglich eine Kapazität von 199 Personen, sodass nicht alle Angemeldeten Platz finden werden. Es gibt an der Technischen Fakultät leider keine Ausweichmöglichkeit, sodass wir Sie bitten möchte nur dann zu kommen, wenn die Endziffer Ihrer Matrikelnummer wie folgt lautet:
- am Dienstag 22.11. Endziffern 2, 5, 8, 1, 4, 7
- am Mittwoch 23.11. Endziffern 0, 3, 6, 9, 2, 5
- ab Dienstag 29.11. keine Einschränkung
Über das weitere Vorgehen werden wir nach Füllungsgrad des Hörsaals entscheiden. Sie können an allen Vorlesungen per Livestream teilnehmen.
Datum | Thema | Folien | Livestream | |
---|---|---|---|---|
Di, 18.10.2022 | Organisation | 00 (Bildschirm) | YouTube | |
Grundlagen | 01 (Bildschirm) 01 (Handout) | Video (Rest 01) | ||
Mi, 19.10.2022 | Erste Schritte in Python | 02 (Bildschirm) 02 (Handout) | YouTube | |
Di, 25.10.2022 | Werte, Typen, Variable und Ausdrücke | 03 (Bildschirm) 03 (Handout) | YouTube | |
Mi, 26.10.2022 | Funktionen: Aufrufe und Definitionen | 04 (Bildschirm) 04 (Handout) | YouTube | |
Mi, 02.11.2022 | (ausnahmsweise von 12-14 Uhr) Funktionen; Bedingungen und bedingte Ausführung | 05 (Bildschirm) 05 (Handout) | YouTube | |
Di, 08.11.2022 | Python-Programme, Sequenztypen und Iteration | 06 (Bildschirm) 06 (Handout) | YouTube, | |
Mi, 09.11.2022 | Entwurf von Schleifen (Teil 1), Akkumulatoren | 07 (Bildschirm) 07 (Handout) | YouTube | |
Di, 15.11.2022 | Entwurf von Schleifen (Teil 2), While-Schleifen, Hilfsfunktionen | 07 (Bildschirm) 07 (Handout) | YouTube | |
Mi, 16.11.2022 | Objekte und Datenklassen | 08 (Bildschirm) 08 (Handout) | YouTube | |
Di, 22.11.2022 | Objekte und Datenklassen | 08 (Bildschirm) 08 (Handout) | YouTube | |
Mi, 23.11.2022 | Datenklassen und Alternativen | 09 (Bildschirm) 09 (Handout) | YouTube | |
Di, 29.11.2022 | Aufzählungstypen, Bäume | 10 (Bildschirm) 10 (Handout) | YouTube | |
Mi, 30.11.2022 | Programmentwicklung: Testen und Debuggen (1) | 11 (Bildschirm) 11 (Handout) | YouTube | |
Di, 06.12.2022 | Programmentwicklung: Testen und Debuggen (2), Objekt-orientierte Programmierung (1) | 12 (Bildschirm) 12 (Handout) | YouTube | |
Mi, 07.12.2022 | Objektorientierte Programmierung (2) | YouTube | ||
Di, 13.12.2022 | Objektorientierte Programmierung (3): Aggregierung, Invarianten, etc | 13 (Bildschirm) 13 (Handout) | YouTube | |
Mi, 14.12.2022 | Dictionaries und Mengen (nur online) | 14 (Bildschirm) 14 (Handout) | YouTube | |
Di, 20.12.2022 | Rekursion, Endrekursion | 15 (Bildschirm) 15 (Handout) | YouTube | |
Mi, 21.12.2022 | Fraktale | YouTube | ||
Weihnachten | ||||
Neujahr | ||||
Di, 10.01.2023 | Funktionale Programmierung (1) | 16 (Bildschirm) 16 (Handout) | YouTube | |
Mi, 11.01.2023 | Funktionale Programmierung (2): Funktionen höherer Ordnung | YouTube | ||
Di, 17.01.2023 | Ausnahmen, Generatoren, Iteratoren | 17 (Bildschirm) 17 (Handout) | YouTube 21/22 | |
Mi, 18.01.2023 | Generatoren, Iteratoren, Backtracking | YouTube 21/22 (Tonproblem), alternativ YT | ||
Di, 24.01.2023 | Automaten, Zustandsmodellierung mit abstrakten und generischen Klassen | 18 (Bildschirm) 18 (Handout) | yt 24-01-2023 | |
Mi, 25.01.2023 | Automaten: Kombination von Zuständen (demo) | Recording | ||
Di, 31.01.2023 | Ausführung von Python - ein Interpreter | interpret.py | yt 31-01-2023 | |
Mi, 01.02.2023 | Komprehensionen für Listen, Generatoren und andere | 19 (Bildschirm) 19 (Handout) | yt 01-02-2023 | |
Di, 07.02.2023 | Finale: Brainf*ck | 18 (Bildschirm) 18 (Handout) | yt 07-02-2023 | |
Mi, 08.02.2023 | Fragestunde zur Klausur | Fragen vorher per Email oder live via Zoom Meeting ID: 827 5928 2295 Passcode: 1Question | Nur im Zoom ohne Aufzeichnung. |
Übungsblätter
Ausgabe | Abgabe | Übungsblatt | Material |
---|---|---|---|
Di, 18.10.2022 | Mo, 24.10.2022 9:00 | Übungsblatt 1 | Lösung |
Di, 25.10.2022 | Mo, 31.10.2022 9:00 | Übungsblatt 2 | Lösung |
Di, 01.11.2022 | Mo, 07.11.2022 9:00 | Übungsblatt 3 | Lösung |
Di, 08.11.2022 | Mo, 14.11.2022 9:00 | Übungsblatt 4 | Lösung |
Di, 15.11.2022 | Mo, 21.11.2022 9:00 | Übungsblatt 5 | Lösung, hangman.py, pillow_test.py, color.py |
Di, 22.11.2022 | Mo, 28.11.2022 9:00 | Übungsblatt 6 | Lösung, test_supermarket.py, test_mail.py |
Di, 29.11.2022 | Mo, 05.12.2022 9:00 | Übungsblatt 7 | Lösung, tree.py, parser.py |
Di, 06.12.2022 | Mo, 12.12.2022 9:00 | Übungsblatt 8 | Lösung |
Di, 13.12.2022 | Di, 20.12.2022 9:00 | Übungsblatt 9 | Lösung, geo.py, test_vector.py |
Di, 20.12.2022 | Mo, 09.01.2023 9:00 | Übungsblatt 10 | Lösung, polynom_test.py |
Di, 10.01.2023 | Mo, 16.01.2023 9:00 | Übungsblatt 11 | Lösung |
Di, 17.01.2023 | Mo, 23.01.2023 9:00 | Übungsblatt 12 | Lösung, tictactoe.py, game.txt |
Di, 24.01.2023 | Mo, 30.01.2023 9:00 | Übungsblatt 13 | Lösung, umsatz.csv |
Di, 31.01.2023 | Mo, 06.02.2023 9:00 | Übungsblatt 14 | Lösung, exam-2022.zip |
Die Abgabe der Übungsblätter und das Feedback für Ihre Abgaben läuft ausschließlich über unseren git-Server. Sie können sich dort mit Ihrem Rechenzentrum-Account einloggen (gleicher Account wie beim Ilias).
Tutorate
Es werden Tutorate sowohl online als auch in Präsenz angeboten:
- Bei den Präsenz-Tutoraten findet in erster Linie "Betreutes Programmieren" statt. Das heißt Sie können dort an den aktuellen Übungsblättern arbeiten und falls Sie feststecken oder Fragen haben, dann steht Ihnen einer unserer Tutoren zur Hilfe bereit. Da sich unsere Computerpools momentan im Umbau befinden, müssen Sie hier Ihren eigenen Laptop mitbringen.
- Bei den Online-Tutoraten werden die aktuellen und vorherigen Übungen und deren Lösungen besprochen, Konzepte aus der Vorlesung erklärt und Fragen zum Vorlesungsstoff beantwortet.
Die Teilnahme an den Tutoraten ist freiwillig.
Da die Räume der Präsenz-Tutorate eine endliche Größe haben, können Sie sich in der ersten Vorlesungswoche zu einem der wöchentlichen Termine anmelden. Sollte mehr Andrang als Raumgröße bestehen, so haben diejenigen Leute Vorrang, die sich zum jeweiligen Tutoratstermin angemeldet haben. Sollten Sie in einer Woche an Ihrem regulären Termin verhindert sein, so können Sie natürlich auch zu einem anderen Termin gehen oder bei Bedarf die Tutorate von mehreren Gruppen wahrnehmen.
Die Notizen der Tutoren finden Sie hier.
Termin | Tutor | Raum |
---|---|---|
Mi 14:00-16:00 | Lukas Kleinert | Geb. 051, SR 00 006 |
Mi 14:00-16:00 | Johannes Krautheimer | Geb. 051, SR 00 034 |
Mi 14:00-16:00 | Daniel Mironow | Online |
Mi 16:15-18:15 | Max Lehr | Online |
Do 08:00-10:00 | Gloria Dobreva | (*) |
Do 08:00-10:00 | Kevin Krüssenberg | Geb. 051, SR 00 006 |
Do 08:00-10:00 | Timpe Hörig | Geb. 101, SR 00-010/14 |
Do 10:00-12:00 | Julian Schur | Geb. 051, SR 00 006 |
Do 10:00-12:00 | Vincent von Bosse | Geb. 101, SR 01-016/18 |
Do 10:00-12:00 | Benke Hargitai | Online |
Do 14:00-16:00 | Julina Peucker | Geb. 051, SR 00 031 |
Do 14:00-16:00 | Christoph Ullinger | Online |
Do 16:00-18:00 | Florian Pollitt | Geb. 051, SR 00 031 |
Do 16:00-18:00 | Till Herrmann | Geb. 051, SR 00 034 |
Do 16:00-18:00 | Simon Dorer | Geb. 101, HS 00 026 |
Fr 10:00-12:00 | Finn Müller | Online |
Fr 10:00-12:00 | Julius Bredemeyer | Online |
Fr 16:00-18:00 | Aliena Ziegler | Geb. 101, SR 01-009/13 |
Fr 16:00-18:00 | Tobias Bürger | Geb. 101, SR 01-016/18 |
Fr 16:00-18:00 | Jascha Hettich | (**) |
(*): Fällt diese Woche aus. Die Betroffen können sich nach Belieben auf die anderen Tutorate verteilen.
(**): Da bei den Freitagsgruppen bisher wenig Andrang bestand, werden wir nur noch 2 der 3 Räume verwenden. Die Gruppe von Jascha Hettich kann sich also auf die Räume der anderen Freitagsgruppen verteilen.
Chat
Zusätzlich zu den Tutoraten gibt es einen Chat, in dem die Tutoren und Assistenten Ihnen bei Fragen zur Seite stehen.
In dem Chat geht es in erster Linie um Fragen zu
- Vorlesungsinhalt
- Übungsblättern
- Programmierung mit Python
- Organisatorisches bezüglich Klausur und Übungsblättern
Es ist nicht erlaubt im Chat größere Ausschnitte von Lösungsansätzen zu posten! Stattdessen können Sie Ihre bisherige Abgabe auf unserem git-Server hochladen und uns im Chat bitten Ihre Abgabe anzuschauen.
Sprechstunde
Bei persönlicheren Fragen, die nicht für den Chat geeignet sind, können Sie uns gerne eine Mail schreiben oder unsere Zoom-Sprechstunde besuchen. Die Zoom-Sprechstunde findet während der Vorlesungszeit jeden Dienstag von 12 bis 13 Uhr statt (Meeting-ID: 827 5928 2295, Passcode: 1Question).
Text Adventures
Im dritten Übungsblatt sollte ein Textadventure geschrieben werden. Wir haben die Tutoren gefragt mit welchen der Spiele sie sich am meisten vergnügt haben und präsentieren nun stolz die Adventures von:
- Jonathan Altherr & Marco Schmidtke
- Ruben Bies
- Leppi
- Lilly & Marcel Schwamberger
- Yassin Mohamed (A casual day)
- Mathis
- Paul Meier (Stray, github)
- Tim Schick (X-WING ATTACK)
Die Textadventures gibt es in der Sammelpackung hier zum Herunterladen. Guten Appetit!
FAQ
-
Wann findet die Probeklausur statt und unter welchen Bedingungen?
Die Probeklausur wird TBD stattfinden und übernimmt die Rolle eines Übungsblattes. Wir entwerfen die Probeklausur nach den gleichen Kriterien, die wir auch für die echte Klausur verwenden. Für die echte Klausur haben Sie einen Computer mit VSCode, keine Internetverbindung und 2 Stunden Bearbeitungszeit. Es liegt in Ihrer Verantwortung bei der Probeklausur die gleichen Bedingungen zu schaffen.
-
Welche Vorgaben sind bei der Abgabe der Übungsblätter zu beachten?
- Die Python-Dateien müssen ausführbar sein. Konkret heißt das:
python3 foo.py
darf nicht direkt abstürzen. - Es müssen die Style-Guidelines eingehalten werden. Dies kann in
vscode
und nach dem Hochladen auf dem Buildserver überprüft werden (siehe Tutorial). - Dateien, Funktionen, Klassen und Parameter müssen exakt wie auf dem Übungsblatt beschrieben benannt werden. Die Tutoren wissen sonst nicht, was sie korrigieren sollen.
- Bei Gruppenaufgaben müssen alle Teilnehmer die Abgabe hochladen und die RZ-Kürzel der Teilnehmer als Kommentar in der ersten Zeile angeben. Dies trifft auch zu, wenn Sie die Gruppenaufgabe alleine machen.
- Verwenden Sie nur Programmierkonzepte, die wir bereits in der Vorlesung behandelt haben.
- Verwenden Sie
if __name__ == '__main__'
um sicherzustellen, dass beim Importieren Ihrer Python-Dateien ausschließlich Definitionen ausgeführt werden. - Verwenden Sie für alle Ihre Funktions- und Methoden-Definitionen korrekte Typannotationen für Parameter und Rückgabewerte
- Die Python-Dateien müssen ausführbar sein. Konkret heißt das:
-
Soll ich
print
oderreturn
verwenden um das Ergebnis eines Funktionsaufrufes zu kommunizieren?Dies kann an der Formulierung im Aufgabentext erkannt werden:
- es soll etwas zurückgegeben werden:
return etwas
- es soll etwas ausgegeben werden:
print(etwas)
- es soll etwas eingegeben werden:
etwas = input()
- es soll etwas als Argument übergegeben werden:
f(etwas)
- es zurückgegeben werden ob etwas wahr ist: Rückgabetyp
bool
, falls wahr dannTrue
ansonstenFalse
- es soll etwas zurückgegeben werden:
-
Ich belege diese Semester die Veranstaltung "Einführung in die Programmierung" als fachfremdes Modul, da ich selbst VWL studiere. Ich brauche allerdings nur die 4 ECTS-Punkte, also nur die Studienleistung. Außer jede Woche die Übungsblätter einzureichen, gibt es sonst (formal) etwas zu beachten (z.B. Anmeldung), sodass am Ende bei Erreichen der nötigen Punktzahl auch wirklich die 4 ECTS-Punkte auf meinem Konto sind?
Wir können nur Bescheinigungen über die Gesamtleistung, Übungen und Klausur, über 6 ECTS ausstellen. Diese Bescheinigung können Sie dann Ihrem Prüfungsamt vorlegen. Ggf. müssen Sie sich vorher bei Ihrer Fakultät anmelden. Auskunft dazu erteilt das dortige Prüfungsamt oder Studienkoordination.
Auf diese Art und Weise kann Ihre Studienleistung später als Modul "Einführung in die Programmierung" (Studienleistung und Prüfungsleistung, 6 ECTS) anerkannt werden, falls Sie später auf einen Studiengang an der TF umsteigen wollen.
Literatur
- Praktische Verwendung von Python in Deutsch: Michael Weigend, Python 3 (Oktober 2022). MITP-Verlag
- Referenz zu Python 3.8 in Deutsch: Michael Weigend. Python ge-packt. 8.Auflage. MITP-Verlag