Regeln

  • Die Aufgaben werden in Gruppen zu je maximal zwei Studenten bearbeitet. Eine Gruppe muss gemeinsam alle Aufgaben innerhalb eines Semesters lösen.
  • Alle 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.
  • Bei der Abnahme werden wir Eure Lösung aus dem SVN-Repository (s.u.) auschecken und anschließend mit den bekannten Optionen kompilieren. Sorgt also dafür, daß alle nötigen Dateien rechtzeitig eingepflegt sind.
  • Bei der Abnahme müssen alle Gruppenmitglieder anwesend sein. Alle müssen 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.
  • 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.
  • 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.
  • 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 Übungsgruppe hat hierzu eine SVN-Gruppennummer der Form bba_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/bba/bba_xx.
  • Die Arbeit mit OpenCV beschränkt sich im Normalfall auf die hier vorgestellten nötigen Grundfunktionen zum Laden, Schreiben und Anzeigen von Bildern, die Klasse Mat als Bilddatentyp und die Funktionen zum Konvertieren zwischen Farbräumen. In Einzelfällen können auch weitere Funktionen erlaubt sein, diese werden dann in der Aufgabenstellung beschrieben. Die Verwendung von nicht erwähnten OpenCV Funktionen ist nicht zulässig, auch (oder gerade wenn) sie die Aufgabenstellung 1:1 implementieren.

Bewertung

Die Benotung der jeweiligen Aufgabe gliedert sich in zwei Teile: Einen Basisteil und einen Bewertungsteil.

Die für den Basisteil notwendige Programmfunktionalität wird im Rahmen jeder Aufgabe neu definiert. Darüber hinaus muss das Programm von allen Gruppenteilnehmern erklärt werden können und kompilierbar im Versionskontrollsystem vorliegen. Dieser Teil ist für jede Aufgabe zu lösen, ansonsten gilt die gesamte Übung als nicht bestanden. Zu diesem Basisteil gehört auch stets die Einhaltung der Code Richtlinien.

Wenn der Basisteil bestanden ist wird im Bewertungsteil die Note festgelegt. Dabei gehen wir erstmal von einer einwandfreien Lösung aus und perfekt beantworteten Fragen aus, welche zusammen mit 9 Punkten bewertet werden würde. Punktabzüge gibt es allerdings unter den folgenden Umständen:

  • Bis zu vier Punkte werden für nicht angefertigte oder inkorrekte Zusatzteile abgezogen. Diese zusätzlichen Anforderungen und ihre Gewichtungen werden für jede Aufgabe neu definiert.
  • Bis zu vier Punkte werden für nicht beantwortete theoretische Fragen abgezogen.
  • Theoretisch beliebig viele Punkte werden für grob unsauberen Code abgezogen. Dazu zählen insbesondere Speicherlecks, grob inperformante Lösungen, mangehalfte Kommentierung und Redundanzen. Details dazu findet ihr weiter unten auf dieser Seite.

Die Punkte aller Aufgaben werden am Ende dann summiert und entsprechend der folgenden Tabelle benotet:

Punkte (Aufgabe)Punkte ≥ (Gesamt)Note
004.0
123.7
253.3
383.0
4112.7
5142.3
6172.0
7201.7
8231.3
9261.0

Theoretische Fragen

  • Grundlage für die theoretischen Fragestellungen sind die Vorlesungsinhalte. Außer dem "Thema" der Aufgabe als groben Anhaltspunkt wird keine Eingrenzung vorgenommen. Damit sind insbesondere auch die Inhalte der optionalen Aufgabenteile für die Fragestellungen relevant.
  • Die Kommentare des Quelltextes sind während der Bearbeitung der theoretischen Fragestellungen einsehbar.
  • Beispiel: eine (sehr einfache) Frage

Abzug: Verwendung von globalen Variablen

Alle Funktionen sollen ausschließlich auf ihren Eingaben arbeiten und ihre Ergebnisse entweder über die "normale" Rückgabe liefern oder über Referenzparameter weitergeben. Dabei ist auch darauf zu achten, dass keine unnötigen Parameter übergeben werden. Die Nutzung einer "Superstruktur" die einfach an jede Funktion übergeben wird ist daher z.B. explizit unzulässig.

Abzug: Speicherlecks

Im Rahmen des Praktikums sollte es normalerweise nicht notwendig sein Speicher explizit mit new oder malloc zu allokieren. Solltet ihr dennoch Speicher auf dem Heap reservieren wollen, müsst ihr das selbstverständlich auch korrekt handhaben. Etwaige Speicherlecks werden daher definitiv mit Punktabzügen bestraft.

Abzug: Mangelhafte Kommentierung

Wirklich jede Funktion und jedes typedef erfordert einen Doxygen Kommentar.

Abzug: Importe in den globalen Namensraum

Für jede Funktion und Klasse soll auf den ersten Blick eindeutig erkennbar sein, aus welcher Bibliothek sie kommt. Der Import von Bezeichnern in den globalen Namensraum mit using namespace xyz; ist daher unzulässig.