Files
codecontender-doc/content/existing_solutions.asciidoc
Christoph Walther 359cdf7f1b Consistent languages
2024-09-20 13:53:23 +02:00

43 lines
4.1 KiB
Plaintext

=== 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] is an assignment creation and assessment tool used in conjunction with **Doctor** and **CodeEditorXblock**. By combining these three tools, any organization using Open Edx can teach and assess programming assignments. Coppin integrates with **Doctor** to enable assessment of assignments and uses **CodeEditorXblock** as a code editor and executor.
Python and Swift code, can be executed and tested locally. The results are displayed in the **Doctor** interface. Evaluation is performed by automatically executing unit tests defined in the task