⇤ ← Revision 1 as of 2022-07-19 02:14:43
Size: 5338
Comment:
|
Size: 5381
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 16: | Line 16: |
== Bewertung der Funktionalität für Projekt 1 (maximal 100%) == | == Bewertung der Funktionalität für Projekt 1 (maximal 100P = 100%) == |
Line 18: | Line 18: |
''Hinweis: Die folgende Aufteilung samt Prozentzahlen sind vorläufig und können noch leicht angepasst werden'' | ''Hinweis: Die folgende Aufteilung und Punktzahlen sind vorläufig und können noch leicht angepasst werden'' |
Line 20: | Line 20: |
Bestimmen, ob ein gegebener Ausdruck gültig ist gemäß Projektbeschreibung: 30% | Bestimmen, ob ein gegebener Ausdruck gültig ist gemäß Projektbeschreibung: 30P |
Line 22: | Line 22: |
Generieren einer (gemäß Projektbeschreibung) zufällig gewählten Gleichung: 10% | Generieren einer (gemäß Projektbeschreibung) zufällig gewählten Gleichung: 10P |
Line 24: | Line 24: |
Eingabe einer Gleichung gemäß Projektbeschreibung: 20% | Eingabe einer Gleichung gemäß Projektbeschreibung: 20P |
Line 26: | Line 26: |
Grafische Darstellung des jeweils aktuellen Zustands: 30% | Grafische Darstellung des jeweils aktuellen Zustands: 30P |
Line 28: | Line 28: |
Sonstige Spiellogik: 10% | Sonstige Spiellogik: 10P |
Line 30: | Line 30: |
== Bewertung der Funktionalität für Projekt 2 (maximal 100%) == | == Bewertung der Funktionalität für Projekt 2 (maximal 100P) == |
Line 32: | Line 32: |
Erreichen der einfachen Durschnittswerte gemäß Projektbeschreibung: 80% | Erreichen der einfachen Durschnittswerte gemäß Projektbeschreibung: 80P |
Line 34: | Line 34: |
Erreichen der etwas besseren Durchschnittswerte gemäß Projektbeschreibung: 20% | Erreichen der etwas besseren Durchschnittswerte gemäß Projektbeschreibung: 20P |
Line 36: | Line 36: |
== Bewertung der Code-Qualität (maximal 100%) == | == Bewertung der Code-Qualität (maximal 100P) == |
Line 38: | Line 38: |
Kompilierung: 30% | '''Kompilierung: 30P''' |
Line 40: | Line 40: |
* Abzug abhängig davon, wie viele Kompilierfehler es gibt, und wie einfach diese für uns zu fixen sind. Bei einfachen Fehlern (z.B. Schreibfehlern): ''bis zu -5% pro Fehler''. Bei mittleren Fehlern: ''bis zu -10% pro Fehler''. Alles darüber hinaus ''-30%''. | * Abzug abhängig davon, wie viele Kompilierfehler es gibt, und wie einfach diese für uns zu fixen sind. Bei einfachen Fehlern (z.B. Schreibfehlern): ''bis zu -5P pro Fehler''. Bei mittleren Fehlern: ''bis zu -10P pro Fehler''. Alles darüber hinaus ''-30P''. |
Line 42: | Line 42: |
Tests: 30% | '''Tests: 30P''' |
Line 47: | Line 47: |
Dokumentation, Code Style, Modularität, Codequalität: 20% * Dokumentation: 6% |
'''Dokumentation, Code Style, Modularität, Codequalität: 20P''' * Dokumentation: 6P |
Line 52: | Line 52: |
* Style (6 Punkte) | * Style (6P) |
Line 56: | Line 56: |
* Modularität (4 Punkte) | * Modularität (4P) |
Line 60: | Line 60: |
* Code-Qualität (4 Punkte) - ''Kein unnötiger Hardcode'' <<BR>> |
* Code-Qualität (4P) - ''Konstanten sollten vernünftige Namen haben und nicht "hard-gecoded" werden'' <<BR>> |
Line 66: | Line 66: |
Const, public/private/protected, valgrind: 20% * Const-correctness (8 Punkte) <<BR>> |
Const, public/private/protected, valgrind: 20P * Const-correctness (8P) <<BR>> |
Line 69: | Line 69: |
* Sinnvolle Einteilung in public/private/protected (6 Punkte) <<BR>> | * Sinnvolle Einteilung in public/private/protected (6P) <<BR>> |
Bewertungsschema
Zur Benotung Ihrer Abgabe bewerten wir zwei Aspekte: (1) die Funktionalität Ihres Programms und (2) die Qualität des Codes (inkl. Unit Tests, Code Style, Valgrind, etc.). Beides bewerten wir mit einer Prozentpunktzahl zwischen 0 und 100. Die detaillierten Punktevergabeschemas hierfür sind in den entsprechenden Abschnitten "Bewertung der Funktionalität" und "Bewertung der Code-Qualität" weiter unten erläutert.
Ihre Gesamtpunktzahl errechnet sich aus: Funktionalität (in %) x Qualität (in %) x 80. Die maximal erreichbare Punktzahl ist also 80 (die restlichen 20 Punkte gab es ja bereits für Ü11). Hier ein paar Rechenbeispiele, die erläutern, wie das Bewertungsschema zu verstehen ist:
Beispiel 1: Wenn Ihr Programm die Funktionalität voll erfüllt und auch die Qualität perfekt ist, erhalten Sie 100 Prozentpunkte für die Funktionalität und 100 Prozentpunkte für die Qualität. Das ergibt eine Gesamtpunktzahl von 100% x 100% x 80 = 80.
Beispiel 2: Wenn Ihr Programm die Funktionalitäten voll erfüllt, aber die Qualität nur zur Hälfte in Ordnung ist, erhalten Sie 100 Prozentpunkte für die Funktionalität und 50 Prozentpunkte für die Qualität. Das ergibt eine Gesamtpunktzahl von 100% x 50% x 80 = 40.
Beispiel 3: Wenn Ihr Programm drei Viertel der Funktionalität erfüllt und die Qualität zu 90% ok ist, ergibt das eine Punktzahl von 75% x 90% x 80 = 54.
Gleitkommazahlen werden zur nächsthöheren Ganzzahl aufgerundet. Falls die Quersumme Ihrer Punktzahl der Superzahl von Lotto am Mittwoch entspricht, wird die Punktzahl mit exp(2∙i∙π) multipliziert.
Bewertung der Funktionalität für Projekt 1 (maximal 100P = 100%)
Hinweis: Die folgende Aufteilung und Punktzahlen sind vorläufig und können noch leicht angepasst werden
Bestimmen, ob ein gegebener Ausdruck gültig ist gemäß Projektbeschreibung: 30P
Generieren einer (gemäß Projektbeschreibung) zufällig gewählten Gleichung: 10P
Eingabe einer Gleichung gemäß Projektbeschreibung: 20P
Grafische Darstellung des jeweils aktuellen Zustands: 30P
Sonstige Spiellogik: 10P
Bewertung der Funktionalität für Projekt 2 (maximal 100P)
Erreichen der einfachen Durschnittswerte gemäß Projektbeschreibung: 80P
Erreichen der etwas besseren Durchschnittswerte gemäß Projektbeschreibung: 20P
Bewertung der Code-Qualität (maximal 100P)
Kompilierung: 30P
- Der Code muss fehlerfrei kompilieren.
Abzug abhängig davon, wie viele Kompilierfehler es gibt, und wie einfach diese für uns zu fixen sind. Bei einfachen Fehlern (z.B. Schreibfehlern): bis zu -5P pro Fehler. Bei mittleren Fehlern: bis zu -10P pro Fehler. Alles darüber hinaus -30P.
Tests: 30P
- Es muss für jede nicht-triviale Funktion (außer Einlesen der Tasteneingabe) einen Unit-Test geben. Es kann OK sein, Funktionen, die eng miteinander zusammenhängen, zusammen in einem Unit-Test zu testen. Ob das sinnvoll ist, merkt man in der Regel daran, wenn bei separate Tests sehr viel ähnlichen Code hätten.
- Jeder Unit-Test muss mindestens einen Normalfall und einen Spezialfall (falls es einen gibt) testen. Bei der Eingabe der Gleichung sollten alle in der Projektbeschreibung genannten Spezialfälle (für die Umsetzung der Pfeiltasten und von backspace) abgedeckt sein.
- Abzug entsprechend dem Anteil der Tests, die nach den oben genannten Anforderungen nicht in Ordnung sind. Wenn zum Beispiel 50% der Tests nicht in Ordnung sind, gibt es nur 50%.
Dokumentation, Code Style, Modularität, Codequalität: 20P
- Dokumentation: 6P
- Jede Funktion muss dokumentiert sein.
- Zu jedem Stück Code, dessen Funktionsweise sich nicht unmittelbar durch Lesen des Codes ergibt, muss es einen Kommentar geben.
- Abzug entsprechend dem Anteil des Codes, für den eine Dokumentation fehlt/nicht in Ordnung ist. - Style (6P)
- Checkstyle muss fehlerfrei durchlaufen.
- Der Code muss abgesehen davon auch gut lesbar sein, insbesondere korrekt eingerückt sein.
- Abzug entsprechend der Menge an Fehlern: pro Fehler 1P Abzug.
- Modularität (4P)
- Wenn ein Teil des Codes für sich alleine umfangreich genug ist oder mehrfach benötigt wird, muss er in einer geeigneten Funktion stehen.
- Der Code für die Logik und die Grafik muss logisch voneinander getrennt sein.
- Abzug entsprechend dem Anteil des Codes, der nach den oben genannten Funktionen nicht in Ordnung ist. - Code-Qualität (4P)
- Konstanten sollten vernünftige Namen haben und nicht "hard-gecoded" werden
- Verwendung sinnvoller Typen
- Korrekte Verwendung von Zeigern/Referenzen statt Objekten
- pro Fehler 1P Abzug.
Const, public/private/protected, valgrind: 20P
Const-correctness (8P)
- pro Fehler 1P Abzug.Sinnvolle Einteilung in public/private/protected (6P)
- Abzug entsprechend dem Anteil der Funktionen/Variablen, für die der Modifier nicht ok ist. 6P Abzug wenn alles public ist.- Speicherlecks, valgrind (6 Punkte)
- pro Fehler 1P Abzug.