Uni-Logo

Einführung in die Programmierung

Vorlesung

Dozent Prof. Dr. Peter Thiemann thiemann@info...
Übungen Hannes Saffrich saffrich@info...
Michael Uhl uhlm@info...
ZeitDi 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.
  • Fragen und Antworten zur Klausur

  • 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.

DatumThemaFolienLivestream
Di, 18.10.2022Organisation 00 (Bildschirm) YouTube
Grundlagen 01 (Bildschirm) 01 (Handout) Video (Rest 01)
Mi, 19.10.2022Erste Schritte in Python 02 (Bildschirm) 02 (Handout) YouTube
Di, 25.10.2022Werte, Typen, Variable und Ausdrücke 03 (Bildschirm) 03 (Handout) YouTube
Mi, 26.10.2022Funktionen: 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

AusgabeAbgabeÜbungsblattMaterial
Di, 18.10.2022Mo, 24.10.2022 9:00 Übungsblatt 1 Lösung
Di, 25.10.2022Mo, 31.10.2022 9:00 Übungsblatt 2 Lösung
Di, 01.11.2022Mo, 07.11.2022 9:00Übungsblatt 3 Lösung
Di, 08.11.2022Mo, 14.11.2022 9:00Übungsblatt 4 Lösung
Di, 15.11.2022Mo, 21.11.2022 9:00Übungsblatt 5 Lösung, hangman.py, pillow_test.py, color.py
Di, 22.11.2022Mo, 28.11.2022 9:00Übungsblatt 6 Lösung, test_supermarket.py, test_mail.py
Di, 29.11.2022Mo, 05.12.2022 9:00Übungsblatt 7 Lösung, tree.py, parser.py
Di, 06.12.2022Mo, 12.12.2022 9:00Übungsblatt 8 Lösung
Di, 13.12.2022Di, 20.12.2022 9:00Übungsblatt 9 Lösung, geo.py, test_vector.py
Di, 20.12.2022Mo, 09.01.2023 9:00Übungsblatt 10 Lösung, polynom_test.py
Di, 10.01.2023Mo, 16.01.2023 9:00Übungsblatt 11 Lösung
Di, 17.01.2023Mo, 23.01.2023 9:00Übungsblatt 12 Lösung, tictactoe.py, game.txt
Di, 24.01.2023Mo, 30.01.2023 9:00Übungsblatt 13 Lösung, umsatz.csv
Di, 31.01.2023Mo, 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.

TerminTutorRaum
Mi 14:00-16:00Lukas KleinertGeb. 051, SR 00 006
Mi 14:00-16:00Johannes KrautheimerGeb. 051, SR 00 034
Mi 14:00-16:00Daniel MironowOnline
Mi 16:15-18:15Max LehrOnline
Do 08:00-10:00Gloria Dobreva(*)
Do 08:00-10:00Kevin KrüssenbergGeb. 051, SR 00 006
Do 08:00-10:00Timpe HörigGeb. 101, SR 00-010/14
Do 10:00-12:00Julian SchurGeb. 051, SR 00 006
Do 10:00-12:00Vincent von BosseGeb. 101, SR 01-016/18
Do 10:00-12:00Benke HargitaiOnline
Do 14:00-16:00Julina PeuckerGeb. 051, SR 00 031
Do 14:00-16:00Christoph UllingerOnline
Do 16:00-18:00Florian PollittGeb. 051, SR 00 031
Do 16:00-18:00Till HerrmannGeb. 051, SR 00 034
Do 16:00-18:00Simon DorerGeb. 101, HS 00 026
Fr 10:00-12:00Finn MüllerOnline
Fr 10:00-12:00Julius BredemeyerOnline
Fr 16:00-18:00Aliena ZieglerGeb. 101, SR 01-009/13
Fr 16:00-18:00Tobias BürgerGeb. 101, SR 01-016/18
Fr 16:00-18:00Jascha 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
  • Soll ich print oder return 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 dann True ansonsten False
  • 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

Links