Although most commonly known as an interactive notebook serving environment, the Jupyter ecosystem may be more usefully thought of as a set of protocols that, among other things, support remote code execution in dynamically launched "kernels" which are now available for a wide variety of programming languages.
Jupyter servers such as the Jupyter kernel gateway or the Jupyter enterprise gateway provide headless access to individually launched remote kernels.
One of the issues with using different code environments for teaching (eg using Jupyter notebooks) and assessment (eg using CodeRunner) is the need to maintain consistency across code environments if students are expected to create assessed code fragments that run the same way in the test server as their own Jupyter powered coding environments.
Which got me wondering: how well defined is the API to the sandbox environment which CodeRunner executes code in and is the sandbox server (Jobe
?) expected to run as service? (Indeed, can it be run as a remote service?)
If the coupling is handled via a well defined API, then could a middleware shim be used to provide sandboxed code execution either via remotely launched Jupyter kernels or via the current sandboxed environment server?
This would allow Jupyter users to make use of the same code environments for running coding labs using Jupyter UIs as well as CodeRunner based assessments, as well as extending the range of code environments supported by CodeRunner.
(As an aside, Jupyter has several candidate autograding solutions, such as nbgrader
as well as integration with okpy
, but nothing that I am aware of that is integrated with Moodle explicitly.)