Intern
    Lehrstuhl für Computerphilologie und Neuere Deutsche Literaturgeschichte

    Hinweise zu Abgaben / Arbeiten mit Programmieranteil

    Work in Progress

    Wenn Sie bei mir Übungsaufgaben, Haus- oder Projektarbeiten mit einem Programmieranteil abgeben, beachten Sie bitte die folgenden Hinweise.

    Was abgeben?

    Geben Sie den vollständigen eigenen Code ab, nicht irgendwelche Ausschnitte. Ihr Code sollte lauffähig sein, d.h. keine Syntax- oder sonstigen Fehler bei dokumentationsgerechtem Gebrauch, Jupyter-Notebooks sollten mit Kernel → Restart Kernel and Run All laufen.

    Außer in völlig trivialen Fällen, in Einführung in Python oder bei Aufgaben, bei denen ich genau vorgebe, was Sie abgeben sollen (z.B. ausgefülltes Notebook) sollten Sie eine README-Datei schreiben, die alle Informationen enthält, um Ihr Programm benutzen zu können (ggf. in Form von Verweisen an andere Stellen). Dazu gehört:

    • ggf. detaillierte Auflistung der Abhängigkeiten bzw. verwendeten Softwarebibliotheken, sofern nicht in requirements.txt / pom.xml
    • ggf. eine kurze Beschreibung der Bedienung bzw. des Aufrufs, mit Beschreibung der erwarteten Ein- und Ausgabeformate
    • wenn irgendwas in der Umgebung erwartet wird (z.B. Dateien / Ordner mit bestimmtem Namen), schreiben Sie es hier hinein
    • Überblick welche Datei etc. dient wozu, sofern das nicht offensichtlich ist

    Ggf. sollten Sie Testdaten (nur Eingabe, nicht von Ihrem Programm generiertes) in geringem Umfang mitgeben, sofern nicht von mir vorgegeben.

    Was nicht abgeben?

    • Bibliotheken, Fremdprogramme etc., die auch mit üblichen Mechanismen (pip, Maven) einfach zu installieren sind
    • Große Datenmengen nur nach Nachfrage
    • Material, das nicht zu ihrem Projekt / ihrer Aufgabe gehört oder das ich schon habe (Notebooks mit meinem Material …)
    • alte Versionen, erfolglose Versuche etc.

    Abhängigkeiten

    In der Regel dürfen Sie externe Module (nicht Teil der Standardbibliothek Ihrer Programmiersprache) verwenden. Sie sollten jedoch möglichst incl. Version dokumentieren, was Sie dort verwendet haben. Für Python gibt es einen einfachen weg, dies zu tun: Mit pip freeze > requirements.txt erzeugen Sie eine Liste aller Bibliotheken samt Version in ihrer aktuellen Python-Umgebung. Diese Liste bearbeiten Sie dann, indem Sie alles löschen, was Sie nicht direkt für Ihren Code benötigen. Das Ergebnis kann z.B. so aussehen:

    bokeh==0.12.0
    gensim==2.0.0
    numpy==1.12.1
    pandas==0.19.0
    requests==2.16.5

    Geben Sie die Datei mit ab. Bitte geben Sie keine unbearbeitete requirements.txt ab!

    Anforderungen an Ihren Code

    • Ihr Programm sollte ohne Änderungen auf anderen Rechnern (z.B. bei mir) lauffähig sein:

      • Schreiben Sie keine absoluten Pfade zu irgendwelchen Dateien in den Code, sondern verwenden Sie Kommandozeilenargumente, relative Pfade (glob('corpus/*.txt'), nicht glob('/Users/Hans/Uni/Projekte/corpus/*.txt')
      • Vermeiden Sie betriebssystemspezifischen Code (os.path.join(parent, child) statt parent + '\\' + child)
      • Dokumentieren Sie Annahmen.
    • Strukturieren Sie Ihren Code:

      • Verwenden Sie Funktionen, eher viele kurze als wenige lange
      • vermeiden Sie globale Variablen
      • mischen Sie nicht Funktions-/Klassendefinitionen mit globalem Code
      • dokumentieren Sie ihre Funktionen kurz (was bedeuten Parameter? Was ist der Rückgabewert?)
      • verwenden Sie sinnvolle Defaults
      • mischen Sie nicht User-Interface (z.B. print-Ausgaben) mit Funktionalität (z.B. Algorithmen), dh das sollte in getrennte Funktionen
    • Achten Sie auf lesbaren Programmcode. Halten Sie sich möglichst an etablierte Styleguides für Ihre Programmiersprache (für Python z.B. PEP8).
    • Verwenden Sie sprechende Variablen- und Funktionsnamen. Schreiben Sie knappe, sinnvolle Docstrings / JavaDocs / etc.
    • Erläutern Sie knifflige und nicht-offensichtliche Codestellen mit einem Kommentar. Code, der für Personen, die die Programmiersprache gut kennen, auch so verständlich ist, soll nicht kommentiert werden. Verständlicher Code ist besser als kommentierter Code.

    Kontakt

    Lehrstuhl für Computerphilologie und Neuere Deutsche Literaturgeschichte
    Am Hubland
    97074 Würzburg

    Suche Ansprechpartner

    Hubland Süd, Geb. PH1