Ü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:
-
Zweifel an der Urheberschaft: Alle Beteiligten erhalten einen negativen Schein.
-
Keine Abgabe (= zu späte Abgabe): 0 Punkte.
-
Quellcode kompiliert nicht: 0 Punkte.
-
JUnit-Testfälle terminieren nicht (Endlosschleife, Timeout): 0 Punkte.
-
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.
-
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.
|