Uni-Logo

Einführung in die Programmierung

Vorlesung

Dozent Prof. Dr. Peter Thiemann thiemann@info...
Assistenz Marius Weidner weidner@cs... Hannes Saffrich saffrich@info...
Übungen Lukas Kleinert lukas.kleinert@students... Timpe Hörig timpe.hoerig@students...
ZeitDi 10:15-11:45 Uhr,  Mi 13:15-14:00 Uhr 
Ort Geb. 101, Hörsaal 00-026 und gleichzeitig aufgezeichneter YouTube Livestream

Klausureinsicht

  • Die Klausureinsicht findet am 15.04. von 14-16 Uhr in der Werthmannstr. 4 statt (PC Pool 9).

Materialien

Die Vorlesung orientiert sich an den Vorlesungen der vorherigen Wintersemester.

Der Link zum Livestream wird jeweils spätestens am Vorabend der Vorlesung hier veröffentlicht.

Wichtig: Aktuell liegen ca. 400 Anmeldungen vor, aber unser Hörsaal hat lediglich eine Kapazität von 199 Personen, sodass nicht alle Angemeldeten Platz finden werden.

DatumThemaFolienLivestream
Di, 17.10.2023Organisation 00 (Bildschirm) recording.
Grundlagen 01 (Bildschirm) 01 (Handout) recording. Video (WS 2021)
Mi, 18.10.2023Übungssystem und Setup setup.md. abgabesystem.md (dateien in VSC öffnen) setup (video). abgabesystem (recording)
Erste Schritte in Python 02 (Bildschirm) 02 (Handout) live stream Aufzeichnung (WS 2022)
Di, 24.10.2023Werte, Typen, Variable und Ausdrücke 03 (Bildschirm) 03 (Handout) Aufzeichnung
Mi, 25.10.2023Funktionen: Aufrufe und Definitionen 04 (Bildschirm) 04 (Handout) Aufzeichnung
Di, 31.10.2023Werte, Typen, Variable und Ausdrücke 05 (Bildschirm) 05 (Handout) Aufzeichnung YT
Di, 07.11.2023Sequenzen und Iteration 06 (Bildschirm) 06 (Handout) Aufzeichnung YT
Mi, 08.11.2023Entwurf von Schleifen 07 (Bildschirm) 07 (Handout) Aufzeichnung YT
Di, 14.11.2023Entwurf von Schleifen 07 (Bildschirm) 07 (Handout) Aufzeichnung YT
Mi, 15.11.2023Objekte und Datenklassen 08 (Bildschirm) 08 (Handout) Aufzeichnung YT
Di, 21.11.2023Datenklassen. Alternativen, Enumerations 09 (Bildschirm) 09 (Handout) Aufzeichnung YT
Mi, 22.11.2023Alternativen, Enumerations, Bäume 10 (Bildschirm) 10 (Handout) Aufzeichnung YT
Di, 28.11.2023Bäume update: 10 (Bildschirm) 10 (Handout) Aufzeichnung YT
Mi, 29.11.2023Suchbäume, Veränderliche Daten, Parameter 11 (Bildschirm) 11 (Handout) Aufzeichnung YT
Di, 05.12.2023Objekt-orientierte Programmierung 12 (Bildschirm) 12 (Handout) Aufzeichnung YT
Mi, 06.12.2023Objekt-orientierte Programmierung: Aggregierung 13 (Bildschirm) 13 (Handout) Aufzeichnung YT, Fortsetzung
Di, 12.12.2023Objekt-orientierte Programmierung: Properties und Überladung update: 13 (Bildschirm) 13 (Handout) Aufzeichnung YT
Mi, 13.12.2023Dictionaries und Sets 14 (Bildschirm) 14 (Handout) Aufzeichnung YT
Di, 19.12.2023Dictionaries und Sets, Rekursion 15 (Bildschirm) 15 (Handout) Aufzeichnung YT, Fortsetzung
Mi, 20.12.2023Rekursion Aufzeichnung YT (von WS22/23 wegen technischer Probleme im Hörsaal)
Di, 09.01.2024Ausnahmen, Generatoren, Iteratoren, Backtracking 16 (Bildschirm) 16 (Handout) Aufzeichnung YT
Mi, 10.01.2024Backtracking, IO (Forts.) Altes Video über I/O (stream hat sich unbemerkt aufgehängt)
Di, 16.01.2024Funktionale Programmierung 17 (Bildschirm) 17 (Handout) Aufzeichnung YT
Mi, 17.01.2024Komprehensionen, Sudoku mit Backtracking (Forts. vom 10.01.) HEUTE NUR ONLINE, BEGINN 12:00 Aufzeichnung YT
Di, 23.01.2024Dekoratoren 18 (Bildschirm) 18 (Handout) Aufzeichnung YT, Aufzeichnung YT
Mi, 24.01.2024Automaten 19 (Bildschirm) 19 (Handout) Aufzeichnung YT
Di, 30.01.2024Interpreter Slides, Interpreter1.py Aufzeichnung
Mi, 31.01.2024Interpreter Interpreter2.py Aufzeichnung
Di, 06.02.2024Finale: Brainf*ck 20 (Bildschirm) 20 (Handout) Live stream YT
Mi, 07.02.2024Fragestunde BEGINN 13:00 "ask me anything" Zoom Meeting Meeting ID: 827 5928 2295, Passcode: 1Question

Übungsblätter

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). Material aus den Tutoraten und Richtlinien zu den Übungsblättern finden Sie hier.

AusgabeAbgabeÜbungsblattMaterial
Di, 17.10.2023Mo, 23.10.2023 9:00Übungsblatt 01 Lösungen
Di, 24.10.2023Mo, 30.10.2023 9:00Übungsblatt 02 Lösungen
Di, 31.10.2023Mo, 06.11.2023 9:00Übungsblatt 03 Lösungen
Di, 07.11.2023Mo, 13.11.2023 9:00Übungsblatt 04 Lösungen
Di, 14.11.2023Mo, 20.11.2023 9:00Übungsblatt 05 Lösungen
Di, 21.11.2023Mo, 27.11.2023 9:00Übungsblatt 06 Lösungen
Di, 28.11.2023Mo, 04.12.2023 9:00Übungsblatt 07 Lösungen
Di, 05.12.2023Mo, 11.12.2023 9:00Übungsblatt 08 Lösungen
Di, 12.12.2023Mo, 18.12.2023 9:00Übungsblatt 09 Lösungen
Di, 19.12.2023Mo, 08.01.2024 9:00Weihnachtsblatt 10 Lösungen
Di, 09.01.2024Mo, 15.01.2024 9:00Übungsblatt 11 Lösungen
Di, 16.01.2024Mo, 22.01.2024 9:00Übungsblatt 12 Lösungen
Di, 23.01.2024Mo, 29.01.2024 9:00Übungsblatt 13 Lösungen
Di, 30.01.2024Mo, 05.02.2024 9:00Übungsblatt 14

Probeklausur test_exam.pdf
Lösungen

Tutorate

Die Einteilung erfolgt in der ersten Vorlesungswoche über HisInOne. Die Teilnahme an den Tutoraten ist nicht Pflicht, allerdings müssen Sie 2 Mal ihre Lösung für eine (Teil-)Aufgabe in Ihrem Tutorat vorstellen. Zudem werden 20% der Übungspunkte für die Teilnahme an Tutoraten vergeben. Für das Bestehen der Studienleistung ist das zweimalige Vorstellen im Tutorat und 50% der Übungspunkte notwendig.

Die Notizen der Tutoren finden Sie hier.

Ihren persönlichen QR-Code für die Tutorate finden Sie hier: QR Code für die Tutorate

TerminTutorRaum
Mi 08:00-10:00Till HerrmannGeb. 051, SR 00 006
Mi 08:00-10:00Tim SchickGeb. 051, SR 00 031
Mi 08:00-10:00Simon DorerGeb. 082, HS 00 006

Geb. 051, SR 00 034

Mi 08:00-10:00Christoph Ullinger

(*)

Geb. 101, SR 01-009/13
Mi 16:00-18:00Daniel MironowGeb. 106, SR 00 007
Do 08:00-10:00Vincent von BosseGeb. 106, SR 00 007
Do 08:00-10:00Kevin KrüssenbergGeb. 082, HS 00 006
Do 08:00-10:00Tilo HeepGeb. 078, SR 00 014
Do 08:00-10:00Sebastian KlähnGeb. 051, SR 00 006
Fr 08:00-10:00Tobias BürgerGeb. 051, SR 00 006
Fr 08:00-10:00Max EilersGeb. 051, SR 00 031

Geb. 051, SR 03 026

Fr 08:00-10:00Max SchweigartGeb. 101, SR 01-016/18
Fr 10:00-12:00Nils PukroppGeb. 101, SR 01-016/18
Fr 12:00-14:00Gloria DobrevaGeb. 101, SR 01-009/13
Fr 12:00-14:00Julina PeuckerGeb. 101, SR 01-016/18

Geb. 106, SR 00 007

Fr 12:00-14:00Aliena ZieglerGeb. 106, SR 00 007

Geb. 101, SR 01-016/18

(*): Fällt diese Woche aus.

Chat

Zusätzlich zu den Tutoraten gibt es einen Chat, in dem die Verantwortlichen 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.

Klausur

  • Die Klausur findet am Montag den 19.2.2024 in den Poolräumen der Werthmannstraße 4 bzw. im Rechenzentrum (Herman-Herder-Str. 10) in zwei Schichten statt. Jeder erhält einen individuellen Termin, 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 einige Zeit vor der Klausur online mit der Umgebung (Ubuntu mit Visual Studio Code) vertraut machen, die Sie auch in der Klausur erwarten wird. Diese Umgebung wird dann unter https://bwlehrpool.ruf.uni-freiburg.de/guacamole/ verfügbar sein. Loggen Sie sich dort mit Ihrem Uni-Account ein und wählen die Veranstaltung "EidP 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.
  • Für die Bearbeitung der Aufgaben haben Sie 150 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.

Hall of fame

Im dritten Übungsblatt sollte eine kleine Version des Akinator-Spiels geschrieben werden. Wir haben die Tutoren gefragt, mit welchen der Spiele sie sich am meisten vergnügt haben und präsentieren Ihnen eine kleine Auswahl in der Sammelpackung zum Herunterladen. Guten Appetit!

FAQ

  • Wann findet die Probeklausur statt und unter welchen Bedingungen?

    Die Probeklausur wird als letztes Übungsblatt stattfinden. 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.
    • 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 etwas anderes 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