Ruprecht-Karls-Universität Heidelberg
Institut für Computerlinguistik

Bilder vom Neuenheimer Feld, Heidelberg und der Universität Heidelberg

Programmieren I

Plot Notenverteilung Klausur

Kursbeschreibung

Studiengang Modulkürzel Leistungs-
bewertung
BA-2010 P I 6 LP
ÜK - 3 LP (nicht für Studierende
der Computerlinguistik)
Dozent Danny Rehl
Veranstaltungsart Vorlesung
Sprache Deutsch
Erster Termin 24.04.2019
Zeit und Ort Montag, 11 – 13 Uhr c. t. (INF 328, SR 25)
Mittwoch, 18 – 20 Uhr c. t. (INF 328, SR 25)
Commitment-Frist tba

Inhalt

Ziel dieser Vorlesung ist, Studierenden einen ersten Überblick über die systematische Entwicklung von wartbaren und korrekten Programmen zu geben. Dies geschieht anhand der objektorientierten, interpretierten Sprache Python, die mit einem einfachen Objektmodell, guter Unterstützung der Modularisierung und einer reichhaltigen Bibliothek einen raschen Zugang zu modernen Programmiertechniken und zudem weitgehende Plattformunabhängigkeit bietet. Dabei wird versucht, den Stoff u. a. anhand konkreter (computerlinguistischer) Fragestellungen unter der Einhaltung von Standards und Konventionen zu entwickeln.

Teilnahmevoraussetzungen

  • Grundkenntnisse in Unix (entsprechend der Pool-Einführung)
  • Es sind keine Programmierkenntnisse im Voraus nötig
Hinweis für Windows-Benutzer: Es steht nur sehr eingeschränkter Support zur Verfügung. Die Aufgaben können aber natürlich auf den Rechnern im Pool (Linux, Debian) erledigt werden.

Anmeldung

Für Studierende der Computerlinguistik (mind 25 %), sowie ÜK-Teilnehmer, ist keine Anmeldung erforderlich. Melden Sie sich bitte nicht an, sondern kommen Sie einfach vorbei. Studierende anderer Fächer müssen sich per E-Mail zwischen dem 5. und dem 19. April bei der Kursleitung anmelden (rehl@cl.uni-heidelberg.de) – die Anzahl dieser Studierenden ist auf 8 Personen beschränkt. Teilen Sie in diesem Fall bitte mit, in welchem Studiengang Sie den Kurs anrechnen lassen wollen und mit wie vielen ECTS-Punkten.

Leistungsnachweis

Bearbeiten der wöchentlichen Übungsaufgaben. Klausurzulassung erreichen. Siehe auch Formalia Scheinkriterien.

Bestehen der Abschlussklausur. Hinweis: Die erfolgreich bestandene Klausur ist Teil der Orientierungsprüfung.

Formalia Scheinkriterien

Der Erwerb eines Leistungsnachweises über 6 ECTS-Punkte setzt voraus, dass alle Aufgabenblätter abgegeben wurden und dabei mindestens 75 % der Punkte erreicht wurden. Damit wird die Klausurzulassung erreicht (ggf. kann diese auch vom letzten Semester übernommen werden). Die Klausur muss dann noch mit der Note 4,0 oder besser bestanden werden.

Der Erwerb eines Leistungsnachweises über 3 ECTS-Punkte (im Rahmen der Belegung des Kurses als ÜK-Veranstaltung) setzt voraus, dass alle Aufgabenblätter abgegeben wurden und dabei mindestens 75 % der Punkte erreicht wurden.

Tutoriumstermine

Tutorin/Tutor Zeit Raum
Ines Dienstag 09:15 - 10:45 Uhr INF 327, SR 4
Jonas Dienstag 16:15 - 17:45 Uhr INF 327, SR 5

Kursübersicht

Seminarplan

Datum Inhalt Dateien
MI 24.04.19 Organisatorisches, Überblick Folien 01
Übungsblatt 00
MO 29.04.19 Installation, Variablen, erste Datentypen und Operatoren Folien 02
MI 01.05.19 fällt aus (Tag der Arbeit) Übungsblatt 01
MO 06.05.19 Datentypen, Präzedenztabelle Folien 03
MI 08.05.19 Übungsblatt 02
Vorlage Übungsblatt 02
MO 13.05.19 Methoden Folien 04
MI 15.05.19 Übungsblatt 03
Vorlage Übungsblatt 03
MO 20.05.19 Unicode vs. Bytestrings, range(), input(), str.format(), Geschichte, Kontrollstrukturen Folien 05
MI 22.05.19 enumerate, eigene Funktionen, Algorithmus Folien 06
Übungsblatt 04
Vorlage Übungsblatt 04
MO 27.05.19 Modularisierung, Zen of Python Folien 07
MI 29.05.19 Referenzen, shallow copies, deep copies, mutable default arguments Folien 08
Übungsblatt 05
Vorlage Übungsblatt 05
Vorlage preprocess_text 05
MO 03.06.19 Rekursion Folien 09
MI 05.06.19 Dateien, Exceptions, PEP-8 Folien 10
Übungsblatt 06
Vorlage Übungsblatt 06
raw_data.csv
MO 10.06.19 fällt aus (Pfingstmontag)
MI 12.06.19 Logging, Reguläre Ausdrücke Folien 11
Übungsblatt 07
Vorlage Übungsblatt 07
MO 17.06.19 Funktionale Programmierparadigmen, comprehensions Folien 12
MI 19.06.19 Generatoren, Iteratoren, Dekoratoren, Kursevaluation Folien 13
Übungsblatt 08
Vorlage Übungsblatt 08
MO 24.06.19 Objektorientierte Programmierung I Folien 14
MI 26.06.19 Objektorientierte Programmierung II Folien 15
Übungsblatt 09

Übungsblatt 10 (Bonus!)
Vorlage Übungsblatt 10 (Bonus!)
Datenset für Übungsblatt 10 (Bonus!)
MO 01.07.19 Vererbung, (MRO & Mehrfachvererbung am 03.07.) Folien 16
MI 03.07.19 MRO, Mehrfachvererbung, Wiederholung, Fragestunde, Besprechung Evaluation, Ende der Commitment-Frist
MO 08.07.19 Klausur 11 – 13 Uhr, INF 306 SR 14
MI 10.07.19 Klausurbesprechung, Klausureinsicht
MO 15.07.19 Tests (Testing), Grundlagen für die Web-Programmierung I Folien 17
MI 17.07.19 Grundlagen für die Web-Programmierung II (im CIP-Pool, INF 325) ZIP-Datei
MO 22.07.19 SCRUM-Workshop I zu wenige Teilnehmer
MI 24.07.19 SCRUM-Workshop II zu wenige Teilnehmer

Abgabe der Übungsaufgaben

Die Abgaben der Aufgaben müssen grundsätzlich jeweils vor Ablauf der angegebenen Frist erfolgen. Für die Abgabe wird eine Online-Plattform (Tutron) zur Verfügung stehen, die automatisiert eine Rückmeldung über die Code-Qualität und Korrektheit der hochgeladenen Abgaben liefert. Die Abgaben dürfen sukzessive verbessert und erneut hochgeladen werden, sofern die Frist nicht abgelaufen ist. Sollte es einmal technisch nicht möglich sein, eine Abgabe in Tutron hochzuladen, so muss diese per E-Mail an prog1@cl... abgegeben werden, und zwar mit folgendem Betreff:

[Prog1] Blatt XX, Vorname Nachname

Hier gibt es ein kleines Handbuch, um mit Tutron zurechtzukommen: tutron_manual.pdf

Literatur

  • Offizielle Python-Dokumentation unter https://docs.python.org
  • Weitere Literatur wird in der Vorlesung bekannt gegeben.

zum Seitenanfang