=== Code Grade ===
link:https://docs.codegra.de[CodeGra.de]

Commercial solution for grading code submissions in an external tool, integratable via the open LTI interface.

==== Features ====

* Automatic grading through unit tests, I/O, error code, linter
* Inline comments like code review
* Plagiarism detection to check similarity between submissions

=== CodeOcean ===

link:https://codeocean.openhpi.de/[CodeOcean] ist eine webbasierte Plattform für praktische Programmierübungen, die hauptsächlich in MOOCs (Massive Open Online Courses) wie auf openHPI verwendet wird. Sie ermöglicht es Lernenden, Code direkt in ihrem Browser zu schreiben, auszuführen und zu testen, ohne eine Entwicklungsumgebung einrichten zu müssen. Zu den Funktionen gehören Syntax-Hervorhebung, serverseitige Code-Ausführung und automatisiertes Feedback durch Unit-Tests. Zusätzlich können Lernende kontextbezogene Fragen stellen, was eine kollaborative Lernumgebung fördert. 

Erfasste Ziele und Anforderungen dieser Arbeit sind:
- Vielseitigkeit: Einsatz verschiedener Programmiersprachen möglich
- Einsteigerfreundlichkeit: Einfaches User Interface
- Skalierbarkeit: Unterstützung für viele Nutzer
- Sicherheit: Ausführung von fremdem Code in einer Sandbox
- Interoperabilität: Integration in Lernmanagement-Systeme

Der gewählte Ansatz ist daher dem gewünschten am ähnlichsten. Es werden eine vorbestimmte Anzahl an Docker-Containern als Ausführungsumgebungen für die Programmieraufgaben bereitgestellt und jeweils für die Bearbeitung der Programmieraufgaben den Nutzern zugewiesen. CodeOcean unterstützt die Integration in andere Lernmanagement-Systeme über die offene LTI-Schnittstelle


=== EmpowrOrg Coppin ===

link:https://github.com/EmpowrOrg/Coppin[EmpowrOrg Coppin] ist ein Tool zur Erstellung und Bewertung von Aufgaben, das zusammen mit **Doctor** und **CodeEditorXblock** verwendet wird. Durch die Kombination dieser drei Werkzeuge kann jede Organisation, die Open Edx nutzt, Programmieraufgaben lehren und bewerten. Coppin ist in **Doctor** integriert, um die Bewertung von Aufgaben zu ermöglichen, und verwendet **CodeEditorXblock** als Code-Editor und -Ausführer.

Python und Swiftcode, können local ausgeführt und getestet werden. Die Ergebnisse werden in der **Doctor**-Oberfläche angezeigt. Die Bewertung erfolgt durch die automatische Ausführung von Unit-Tests, die in den Aufgaben definiert sind.
