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

Codegrade is a commercial solution for grading code submissions in an external tool, integratable via the open LTI interface. It supports the automatic grading of code submissions through unit tests, I/O, error code, and linter. The platform additionally provides a code review feature with inline comments, that can be used to give feedback to the students. There is also a plagiarism detection feature to check the similarity between submissions.

cite:[noauthor_codegrade_nodate]

=== CS50 with Check50 ===
link:https://cs50.readthedocs.io/[CS50]
The Harvard MOOC which is build upon the edX platform doesn't use a built-in code grading system. Instead, there is a separate tooling called CS50 with multiple checking tools for i.e. linting (`style50`), plagiarism detection (`compare50`), and unit tests (`check50`).

The check tool is written in Python and uses plain annotated Python functions to define tests, for other programming languages, extensions are used. Therefore this tool in itself only supports C, Python, and Flask and has limited support for other languages. Whoever wants to use this toolset in any language will have to get used to the Python syntax. 
cite:[noauthor_check50_nodate]

The scalability of this solution consists of the use of GitHub repositories. The git-Wrapper `submit50` is used to store the solutions in a local repository and push them to GitHub, where CS50 staff can access them. cite:[noauthor_submit50_nodate]

=== openHPI and CodeOcean ===

link:https://codeocean.openhpi.de/[CodeOcean] 

The openHPI platform of the Hasso Plattner Institute in Potsdam (HPI) is an xMOOC (Massive Open Online Course) offer that focuses on video lectures, which are reused from existing recordings in form of podcasts at the HPI. It builds upon the Canvas LMS, which was chosen for its "modern user interface and the availability of crucial functional components [...]" cite:[totschnig_openhpi_2013].

The implemented solution for automatic grading of programming tasks in openHPI is CodeOcean, a web based platform separately developed at the HPI. It allows learners to write, execute and test code directly in their browser without the need to set up a development environment. Features include syntax highlighting, server-side code execution and automated feedback through unit tests. Additionally, learners can ask context-related questions, which makes it a collaborative learning environment.

.The highlighted goals and requirements of this work are:
* Versatility: Use of different programming languages possible
* User-friendliness: Simple user interface
* Scalability: Support for many users
* Security: Execution of foreign code in a sandbox
* Interoperability: Integration into learning management systems

The chosen approach is therefore most similar to the desired one. A predetermined number of Docker containers are provided as execution environments for the programming tasks and assigned to the users to work on their programming tasks. CodeOcean facilitates integration into other learning management systems via the open LTI interface, as is the case with most comparable solutions.
cite:[staubitz_codeocean_2016]

There have been new developments to this platform which in include a collaboration service called CodeHarbor to exchange tasks between instances of code ocean. This could be interesting for future uses in the context of the HTWK Leipzig, depending on how the platform is used, e.g. for the use in internal courses.
cite:[serth_codeocean_2021]

=== 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.
