Regeln / SVN

Allgemeine Regeln

  • Die Aufgaben werden in Gruppen zu je maximal zwei Studenten bearbeitet. Eine Gruppe muss gemeinsam alle fünf Aufgaben innerhalb eines Semesters lösen. Alle Aufgaben sind in OpenGL mit C zu lösen.
  • Alle fünf Aufgaben werden fest vorgegeben. Die Aufgabenstellungen werden spätestens am Abgabetag der jeweils vorherigen Aufgabe auf der entsprechenden Internetseite veröffentlicht. Aufgabe 1 wird spätestens am Tag der Einführungsveranstaltung veröffentlicht.
  • Die Abnahme findet jeweils an den genannten Terminen unter Linux an einem Rechner im RZ statt.
  • Die Nutzung von SVN ist Pflicht! Bei der Abnahme werden wir Eure Lösung aus dem SVN-Repository auschecken, andere Quellen werden von uns nicht verwendet.
  • Bei der Abnahme werden wir Eure Lösung aus dem SVN-Repository (s.u.) auschecken und anschließend kompilieren (Compiler: gcc, Compilerflags: -Wall -Werror, die Flags -ansi -pedantic sind NICHT gefordert. Variablen können also nicht nur zu Beginn eines Blocks, sondern überall deklariert werden und einzeilige Kommentare mit // sind möglich). Sorgt dafür, daß alle nötigen Dateien rechtzeitig eingepflegt sind.
  • Bei der Abnahme müssen alle Gruppenmitglieder anwesend sein und bei der Präsentation der Lösung aktiv mitwirken. Sollte ein Gruppenmitglied wegen Krankheit (entschuldigt) fehlen, so muß der jeweils andere (soweit vorhanden) die Lösung allein präsentieren. Gegebenenfalls muß nach seiner Genesung auch der Kranke die Lösung kurz präsentieren und erklären können.
  • Für die Abnahme werden die ungefähren Zeitpunkte für jede Gruppe auf der Seite der jeweiligen Aufgabe angegeben, so daß die parallel stattfindende Bearbeitung der neuen Aufgabe nur geringfügig unterbrochen wird. Die Abnahmereihenfolge wird von Aufgabe zu Aufgabe wechseln. Jede Gruppe muss 10 Minuten vor dem angegeben Zeitpunkt abnahmebereit sein.
  • Zu jeder Aufgabe gibt es vorher eine Einführung, bei der Hinweise zur neuen Aufgabe gegeben werden. In den Wochen, in denen keine Abnahmen stattfinden, sind stets einige Abnehmer im RZ, um Fragen zu beantworten und Hilfestellungen zu geben.
  • Eine Abmeldung von der Veranstaltung, ohne daß eine Noteneintragung erfolgt, ist bis spätestens zum Tag der Abgabe der 3. Aufgabe per Mail an ne@fh-wedel.de möglich.

Bewertung

Die Benotung einer Aufgabe gliedert sich in drei Teile: Kernanforderungen, weitere Funktionalitätsanforderungen, Codequalität & Fragen.

Die Kernanforderungen umfassen wenige, kurze Definitionen des absoluten Mindestumfangs an erforderlicher Funktionalität. Sie beschreiben sozusagen den thematisch zu dieser Aufgabe gehörenden Kern. Die genannten Kernanforderungen müssen in jedem Fall komplett erfüllt werden. Andernfalls gilt das gesamte Praktikum als nicht bestanden!

In den weiteren Funktionalitätsanforderungen sind die Funktionalitäten aufgelistet, die das Programm zusätzlich zu den Kernanforderungen erfüllen soll. Dies sind sowohl aufgabenspezifische Punkte, als auch allgemeinen Anforderungen (z.B. eine Hilfeausgabe). Wird eine Anforderung der Aufgabenstellung oder der allgemeinen Anforderungen (s.u.) dabei nicht korrekt erfüllt, führt dies zu einem Punktabzug von 1 Punkt. Es sind minimal 0 Punkte möglich (ausgehend von 9 Punkten als Maximalpunktzahl pro Aufgabe). Nur das Erfüllen der Kernanforderungen und Ignorieren der weiteren Funktionalitätsanforderungen sowie der Fragen führt also zu einer 4.0 (siehe Tabelle unten).

Codequalität & Fragen bewertet die Codequalität und die Beantwortung der theoretischen Fragen, die während der Abnahme gestellt werden. Die Codequalität wird anhand folgender Kriterien beurteilt. Jede nicht erfüllte Anforderung führt dabei zu einem Abzug von 1 Punkt, es sind wieder minimal 0 Punkte insgesamt bei einer Aufgabe möglich:

  • kein unbenutzter Code aus den Beispielprogrammen mehr vorhanden (insb. beim Tastaturcallback!)
  • gute Modularisierung,
    keine zu langen Methoden und Module (Faustregel: maximal 1000 Zeilen pro Modul, maximal 1,5 Bildschirmseiten pro Methode. In begründeten Fällen sind Ausnahmen möglich),
    keine Codeverdoppelung,
    strikte Trennung von Logik, Callback, Darstellung etc.,
    kein unnötig komplexer Code, wenn sich etwas auch einfach lösen läßt
  • Kommentierung aller (auch sehr kurzer!!) Methoden, konkret dessen, was die Methode tut, welche Parameter rein- und welche Ergebniswerte hinausgehen in einem einheitlichen Format,
    Kommentierung aller hinreichend komplexen Stellen mit Inline-Kommentaren
  • konsistende (einsprachige) Bezeichner,
    wo möglich werden Konstanten benutzt,
    so wenig globale Variablen wie erforderlich,
    adäquate Datentypen selbst erstellen ("ein struct statt 5 ints")
  • saubere Speicherfreigabe, keine Speicherlecks bzw. Speicherzugriffsfehler

Wir werden bei der Abnahme Fragen zu OpenGL und zum theoretischen Hintergrundwissen des behandelten Themenbereiches stellen. Ihr solltet Euch also sowohl mit den verwendeten Funktionen/Befehlen, als auch mit dem jeweiligen Vorlesungsstoff und natürlich den Folien der jeweiligen Einführungsveranstaltung intensiv beschäftigen. Hiermit soll sichergestellt werden, daß sich tatsächlich jeder für sich fundiert mit dem Stoff der Aufgabe befaßt und diesen verstanden und nicht nur die Beispielprogramme zu einer Lösung "umgebaut" hat. Für nicht beantwortete Fragen werden maximal 3 Punkte pro Aufgabe abgezogen.

Es ist den Abnehmern möglich, bei mehreren sehr kleinen "Vergehen" (z.B. nur eine Methode nicht kommentiert, nur eine Teilfrage nicht beantwortet etc.) die Punktabzüge zu kumulieren.

Die Punkte aller Aufgaben werden am Ende summiert und entsprechend der folgenden Tabelle in eine Note umgerechnet:

Punkte  Note 
0..24.0
3..73.7
8..123.3
13..173.0
18..222.7
23..272.3
28..322.0
33..371.7
38..421.3
43..451.0

Allgemeine Anforderungen

Folgende allgemeine Anforderungen gelten für das gesamte Praktikum (teilweise sind Ausnahmen in Klammern angegeben). Nichterfüllung einer Anforderung führt zum Abzug eines Punktes bei der Bewertung!

  • zeitabhängige Animation und Doublebuffering werden benutzt. Es soll möglich sein, per Tastendruck die gesamte Animation zu pausieren (z.B. durch "überschreiben" der vergangenen Zeit mit dem Wert 0) und danach wieder fehlerfrei und ohne zwischenliegende Änderungen zu starten
  • alle Objekte werden in separaten Funktionen als Einheitsobjekte im Ursprung erzeugt. Verwendung des Matrixstacks und der Matrizenoperationen (z.B. glRotate)
  • korrekte Vertexreihenfolge bei allen Flächen (Frontfaces gegen den Uhrzeigersinn, Backfaces im Uhrzeigersinn). Aktiviertes Backfaceculling
  • die Darstellung und Benutzbarkeit (z.B. bei Selektionen) wird bei Änderungen des Fenster-Seitenverhältnisses nicht verzerrt bzw. beeinträchtigt. Es gibt einen Vollbildmodus
  • F1 schaltet zwischen Wireframe- und Flächendarstellung hin und her (zu Debugzwecken), man kann sich mit h/H eine Hilfe mit allen (Maus-)Tastenbelegungen ausgeben lassen (für Aufgabe 1 in der Konsole, ab Aufgabe 2 und generell bei CG2 als Text im Fenster), q/Q/Esc beendet das Programm
  • es wurde die in der Aufgabenstellung geforderte Projektion (orthografisch oder perspektivisch) umgesetzt. Die jeweils korrekte Ebene bildet dabei die Grundfläche (x-y-Ebene bei orthografischer, x-z-Ebene bei perspektivischer Projektion)
  • alle Normalen sind korrekt gesetzt und können mittels F2 angezeigt werden (gilt nur für 3D-Aufgaben und nur für selbstmodellierte Objekte - also z.B. nicht für Quadriken - und nicht bei Shaderaufgaben). Alle Normalen werden normiert
  • korrekte Beleuchtungsberechnung wie jeweils in der Aufgabenstellung gefordert. Attribute der Lichtquellen: die Position und Richtung werden NACH dem gluLookAt gesetzt, alles andere nur EINMAL bei der Initialisierung
  • glColorMaterial(...) und glEnable(GL_COLOR_MATERIAL) sind nicht erlaubt. Ausnahme: Es werden Vertexarrays benutzt
  • wenn Picking benutzt wird: Im Rendermodus GL_SELECT werden nur die pickbaren Objekte gezeichnet
  • wenn Texturen benutzt werden: Die Texturkoordinaten müssen so angegeben werden, wie in der Aufgabe gefordert (also z.B. nicht explizit, wenn sie automatisch erzeugt werden sollen). Mehrere Objekte mit derselben Textur sollten aus Performancegründen direkt nacheinander gezeichnet werden (möglichst wenige glBindTexture(...))
  • wenn Transparenz benutzt wird: die Zeichenreihenfolge der transparenten Elemente ist korrekt (erst alle nicht transparenten Objekte, dann die transparenten von hinten nach vorne auf die Kamera zu)

Unfreiwillige Beendigung der Veranstaltungsteilnahme

Folgende Vergehen führen zum Ausschluss von der gesamten Veranstaltung des jeweiligen Semesters und damit zum Nichtbestehen:

  • Kopieren (lassen) von Lösungen oder Lösungsteilen anderer Gruppen oder aus dem Internet. Wir werden die eingecheckten Quellen aller Gruppen miteinander vergleichen!
  • Fehlende, unvollständige oder sehr fehlerhafte Lösungen zum jeweiligen Abgabetermin. (Sollte es doch einmal der Fall sein, so meldet Euch rechtzeitig vor dem Abgabetermin!)
  • Unentschuldigtes Nichterscheinen zum jeweiligen Abgabetermin. Krankheiten sind mit Attest ("gelber Zettel") nachzuweisen.
  • Die Lösungen wurden nicht gemeinsam von allen Gruppenmitgliedern erarbeitet.

Wir gehen davon aus, daß alle Teilnehmer Mitglied im Team zum Praktikum in MS Teams sind und die Nachrichten dort lesen. Alle von uns dort gemachten Ankündigungen gelten als verbindlich. Wichtige Ankündigungen bzw. Änderungen werden i.d.R. zusätzlich auch noch einmal in der jeweiligen Aufgabenstellung veröffentlicht.

SVN

  • Bitte beachtet, daß die Nutzung von SVN Pflicht ist, da wir bei der Abnahme Eure Lösung aus dem SVN-Repository auschecken.
  • Alle erzeugten Quelltexte, Makefiles und alles, das sich nicht durch Compilation erzeugen lässt, soll in ein SVN-Repository eingepflegt werden. Dies liegt auf dem Server https://svn.fh-wedel.de
  • Jede Gruppe hat hierzu eine SVN-Gruppennummer der Form cg1_xx (xx steht für die Gruppennummer), für die ein Verzeichnis im SVN-Repository zur Verfügung steht. Dieses Verzeichnis hat den Pfad repos/uebungen/cg1/cg1_xx. Das Verzeichnis enthält die Unterverzeichnisse ueb01 bis ueb05 für die einzelnen Aufgaben.
  • Hinweise zum genauen Umgang mit SVN finden sich auf dieser Seite

Online-Prüfungen

Wenn wichtige Gründe dem üblichen Ablauf der Veranstaltung in einem gemeinsamen Prüfungsraum entgegenstehen (siehe auch PVO III. "Elektronische Prüfungen"), kann nach Rücksprache mit dem Prüfungsausschuss wie folgt vom oben beschriebenen üblichen Vorgehen abgewichen werden:

  • Die Anwesenheitspflicht während der Einführung entfällt.
  • Die im Ablaufplan vermerkten Betreuungstermine im RZ finden nicht statt. Während der Bearbeitung kann mittels MS Teams oder per Mail Hilfestellung von einem Abnehmer angefordert werden. Bedenkt bei einer Mail bitte, dass eine Beantwortung unsererseits aufgrund anderer Anfragen und Verpflichtungen durchaus bis zu 3 Tage dauern kann. Bei einer Kontaktaufnahme über MS Teams versuchen wir, schnellstmöglich einen Betreuungschat oder eine Videokonferenz mit Euch zu starten oder einen Termin dafür zu vereinbaren. Versucht bitte in jedem Fall, das aufgetretene Problem so genau wie möglich zu beschreiben, z.B. inkl. Fehlermeldung, Codezeile oder einer fehlerhaften Situation. Checkt den aktuellen Stand des Quellcodes unbedingt vor der Anfrage ins SVN ein!
  • Erstellte (fertige) Lösungen sind bis spätestens zum Abgabetermin ins SVN einzuchecken.
  • Abnahmen der erstellten Lösungen inkl. Erläuterung des Quellcodes durch die Gruppe finden online mittels MS Teams statt. Der Abnehmer nimmt hierbei die Rolle des Prüfungsorganisators nach PVO §21  ein. Richtet Euch rechtzeitig vorher die benötigten Tools hierfür ein und testet insb., ob Eure Kamera, Mikrofon und Lautsprecher funktionieren!
  • Die Online-Abnahmen finden generell im Zeitraum des CG-Praktikums wie im Vorlesungsplan vermerkt statt. Die individuellen Zeiten für jede Gruppe finden sich in der Aufgabenstellung. Wir kontaktieren Euch zur Abnahme über einen Gruppenchat in MS Teams. Aufgrund der Vielzahl der Abnahmen und der technischen Randbedingungen kann es hier ggf. zu kurzen Verzögerungen kommen.
  • Sollte die Verbindung für die Online-Abnahme aufgrund technischer Probleme nicht zustandekommen oder wiederholt abbrechen, wird die Online-Abnahme abgebrochen. Sind nicht alle Gruppenmitglieder zur Online-Abnahme anwesend, wird die Online-Abnahme nur mit den anwesenden Teilnehmern durchgeführt. Per Mail an die FH-Adresse wird der Gruppe bzw. dem abwesenden Gruppenmitglied dann einmalig ein Ersatztermin mitgeteilt (bevorzugt während eines folgenden im Vorlesungsplan vorgesehen CG-Praktikumstermins). Abweichende Terminvereinbarungen sind möglich. Sollte sich die Online-Abnahme auch am Ersatztermin nicht durchführen lassen, gilt diese Aufgabe für die betroffene(n) Person(en) als nicht bestanden.
  • Sollten während der Online-Abnahme nicht erlaubte Hilfsmittel verwendet oder weitere Personen in Anspruch genommen werden, so wird dieser Vorfall als mögliche Täuschung dem Prüfungsausschuss gemeldet, was zum Nichtbestehen dieser Aufgabe oder der gesamten Übung führen kann.
  • Es gelten die weiteren Regelungen der PVO im Abschnitt III zu Elektronischen Prüfungen.