Übungen zu Übersetzerbau

Übungsmodus

  • Es gibt sieben (7) Übungen.
  • Alle (7) davon sind verpflichtend.
  • Pro Übung können maximal 24 Punkte erreicht werden.
  • Abgeschriebene Übungen werden nicht bewertet, d.h. es gibt dafür keine Punkte.
  • Die Übungsabgabe erfolgt in unregelmässigen Abständen jeweils bis Mittwoch.
    Zu spät abgegebene Übungen werden mit 0 Punkten bewertet.
  • Ist die 6. Übung mit 0 Punkten bewertet, wird ein negativer Schein ausgestellt.
  • Für die Note wird der Punktedurchschnitt der Übungen berechnet:
    (Summe der Punkte) / Anzahl der Übungen
  • Notenschlüssel:
    ab Pkte Note
    21 Sehr gut (1)
    18 Gut (2)
    15 Befriedigend (3)
    12 Genügend (4)
    0 Nicht genügend (5)
  • Ab zwei abgegebenen Übungen wird ein Schein ausgestellt (positiv oder negativ).

Abgabe

Elektronisch

  • In ihr Repository, die Adresse erhalten Sie per Mail.
  • Anmeldung
        Login: kMatrNr
        Passwort: lt. Email
  • Die Abgabe muss sämtliche Quellcodedateien des lauffähigen Compilers enthalten. Daher auch unveränderte Angabe-Dateien mit abgeben!
  • Die Theorie-Übungen 1 und 7 müssen als PDF abgegeben werden.
  • In der Abgabe muss die Verzeichnis-Struktur (src/ssw/mj/...) enthalten sein.
  • Keine Testfälle abgeben (auch nicht eigene)

Bewertung der Übungen

Die Übungen werden nach folgenden Regeln bewertet:

  1. Zweifel an der Urheberschaft: Alle Beteiligten erhalten einen negativen Schein.
  2. Keine Abgabe (= zu späte Abgabe): 0 Punkte.
  3. Quellcode kompiliert nicht: 0 Punkte.
  4. JUnit-Testfälle terminieren nicht (Endlosschleife, Timeout): 0 Punkte.
  5. JUnit-Testfäl schlägt fehl: jeweils -2 Punkte pro Testfall (auch für die Testfälle vergangener Übungen), unabhängig von der Ursache. Zusätzliche werden für den tatsächlichen Fehler Punkte gemäß der Schwere des Fehlers nach den Richtlinien abgezogen.
  6. Ist die 6. Übung mit 0 Punkten bewertet, wird ein negativer Schein ausgestellt.

Richtlinien für Punkteabzüge

Fehler in der Funktionalität (Abzug je nach Art des Fehlers)

Hinweis: auch bei Übungen ohne JUnit-Failures können Punkte abgezogen werden.

Programmierung (jeweils -1 bis -3 Punkte)

  • Lösung unklar strukturiert
  • Komplizierte Lösung
  • Hohe Komplexität der Ausdrücke
  • Falsche Wahl der Datentypen (z.B. float statt int)
  • Unnötiger Import oder Deklaration von Klassen bzw. Variablen
  • Unnötige Zuweisungen
  • "Toter" Programmcode
  • Umständliche Formulierungen, zum Beispiel:
    • Vergleiche auf true oder false:
      if (a == true)
      if (a == false)
    • sinnlose Verzweigungen:
      if (a) return true; else return false;
      if (a) return false; else return true;
  • Konkatenation von Strings in Schleifen ohne StringBuilder:
    while (...) { aString = aString + getString(...); }
  • Zugriff auf Schleifenlaufvariable nach Verlassen der Zählschleife (for)
  • Veränderung der Schleifenlaufvariable in der Zählschleife

Programmierstil (jeweils -1 Punkt)

  • Audruckslose Namen für Variablen und Felder
  • Schlechte optische Aufbereitung des Programmtextes (z.B. Einrückungen)
  • Schlechte oder sinnlose Kommentierung (Qualität geht über Quantität)
  • Konstante Werte im Programmtext statt benannter Konstanten
  • Unleserliche Ausdrücke (z.B. wegen fehlender Klammerung)
  • Abweichen von Englisch als Kommentar- oder Bezeichnersprache
  • Schlechter oder inkonsistenter Stil (siehe Stilrichtlinien)
  • Unbehandelte Compiler Warnings

Generell: Bei einer Aufgabe werden maximal so viele Punkte abgezogen wie erreicht werden können, d.h. minimal 0 Punkte pro Aufgabe.