I want to build an online course on graph algorithms for my university. I've tried to find a solution which would let submit, execute and test student's code (implement an online judge), but have had no success. There are a lot of complex LMS and none of them seem to have this feature as a basic functionality.<p>Are there any good out-of-box solutions? I'm sure I can build a course using Moodle or another popular LMS with some plugin, but I don't want to spend my time customizing things.<p>I'm interested both in platforms and self-hosted solutions. Thanks!
I'm using the Autolab project from CMU, and I'm quite satisfied. You'll need a couple machines to self host, and run the student's code.<p><a href="http://www.autolabproject.com" rel="nofollow">http://www.autolabproject.com</a><p>Features:<p><i>Autograding</i>
Grade any assignment in any language using any software package. Instantly.<p><i>Scoreboards</i>
Encourage healthy competition with a real-time rank ordered scoreboard.<p><i>Code Annotation</i>
Augment the autograde with additional feedback directly on the student's code.<p><i>Cheat Detection</i>
Maintain academic integrity by comparing assessments with each other and with past submissions. Uses Stanford's Moss Cheat Detector.
I could write a novel about this because I've been creating courses since 2015 but I'm going to keep it short.<p>I've tried a lot of platforms and teachable.com is by far the best solution as of today if you don't have a requirement where you expect people to upload code and then run automated tests against it.<p>I currently use thinkific.com for my courses because over a year ago I made that decision and switching between platforms is too painful for your users (they would need to make a new account, lose their progress and potentially lose invoice data, etc.). I will move off Thinkific in the future, but that's not going to happen until I finish building my own platform (which I'm currently doing at the moment as a side project mainly because as a developer, I'm still at my happiest when I'm writing code).<p>With that said, I also use Teachable for another project and the UI is a million times ahead of where Thinkific is for both instructors and students. Every time I use Teachable I'm upset that I chose to use Thinkific initially.<p>At the bare minimum you'll have to assemble your course, pick a theme for the front end, and build up your course's description page.<p>Expect to pay $100 / month for most platforms.
DataCamp has DataCamp Teach (<a href="https://www.datacamp.com/teach" rel="nofollow">https://www.datacamp.com/teach</a>), which allows you to create your own interactive content.<p>Disclaimer: I work for DataCamp<p><i></i>Edit<i></i>: there's also a 'light' version available: <a href="https://github.com/datacamp/datacamp-light" rel="nofollow">https://github.com/datacamp/datacamp-light</a>
Maybe look at Jupyter Notebook? It does much of this out of the box, but may not be exactly what you are looking for.<p><a href="http://jupyter.org/about" rel="nofollow">http://jupyter.org/about</a>
I've worked on this problem a bit for python, and these were some of the interesting tools that came to mind.<p>* nbgrader: tool for managing and grading submissions using Jupiter notebooks.<p>* codeocean.com: lets you put up a self contained notebook that people can run and clone online.<p>* ipython_nose: allows you to put unit tests inside a jupyter notebook.<p>I've also been toying a lot with building DataCamp projects, which are basically jupyter notebooks with unit tests (note, I work on other things at DataCamp). If the "online judge" is just deciding whether a submission meets a set of criteria, they might work well. If the judge is comparing student submissions to each other (eg ranking by speed), then they probably wouldn't be a great fit.<p><a href="http://authoring.datacamp.com/projects/" rel="nofollow">http://authoring.datacamp.com/projects/</a>
If you create your course assignments in a Jupyter notebook then you can use OK to grade them. <a href="http://jupyter.org" rel="nofollow">http://jupyter.org</a> <a href="http://okpy.org" rel="nofollow">http://okpy.org</a>
I know about a platform calld Ans[1] that supports code submission for assignments. It was built by a startup from TU Delft.<p>[1] <a href="https://www.ans-delft.nl/" rel="nofollow">https://www.ans-delft.nl/</a>
There is a Brazilian solution called Nutror that accompanies the ecosystem of Eduzz, I have already tested and believe to be the best in the world today (in terms of simplicity of use).
I don't think I've ever heard of the ability to have students upload code and then run that code securely described as "basic functionality" before.
It depends a bit on what you want them to write code in. R Shiny has some built in e-learning functionality with interactive documents. At least two packages will let you-develop e-learning materials. If you use Python Jupyter notebooks have a an ability to be graded which would allow grading of code. I would then recommend Piazza for cimmunication with students as it supports code formatting and math in the form of LaTeX support.
My university uses Mooshak for that: <a href="https://mooshak2.dcc.fc.up.pt/" rel="nofollow">https://mooshak2.dcc.fc.up.pt/</a> (this is the new version, when I attended they were using the previous: <a href="https://mooshak.dcc.fc.up.pt/" rel="nofollow">https://mooshak.dcc.fc.up.pt/</a>)
Is there any way to contact you personally? I'm a member of a group developing educational games for software engineers and we're looking for project ideas. Perhaps we could collaborate on a graph exercise application that would run students' code, grade their submissions and, for instance, visualise graphs.
An univerisity course I am following uses this CMS[1] to have that "basic functionality" you are talking about.<p>[1] <a href="https://github.com/cms-dev/cms" rel="nofollow">https://github.com/cms-dev/cms</a>
SaaS platforms for it are <a href="https://teachable.com" rel="nofollow">https://teachable.com</a> and <a href="https://www.thinkific.com" rel="nofollow">https://www.thinkific.com</a>
At KIT they use Praktomat: <a href="https://github.com/KITPraktomatTeam/Praktomat/" rel="nofollow">https://github.com/KITPraktomatTeam/Praktomat/</a><p>GitHub plus Travis CI is not enough?
A company I've worked for in the past is an Australian company called CourseGenius. Fairly affordable and has a free trial.<p>Avoid SCORM at all costs lol.
I dont know about automated testing, but wanna plug this question: :)<p>I am producing an online course on managing remote teams. I want to use <a href="https://www.podia.com/" rel="nofollow">https://www.podia.com/</a>
Has anyone used it?<p>Regarding automated testing - I dont think this is a basic feature.
If you create your assignments as Jupyter notebooks then you can use OK to grade them. <a href="http://juypter.org" rel="nofollow">http://juypter.org</a> <a href="http://okpy.org" rel="nofollow">http://okpy.org</a>
The edX platform used by edX.com (of course) but also quite a few others is open source.<p><a href="https://github.com/edx/" rel="nofollow">https://github.com/edx/</a><p>edX.com has this function but I don't know if it's in the pen source part and/or how easy it is to implement or use.<p>An entire platform may be a little overkill for what you want though?<p>> <i>I don't want to spend my time customizing things.</i><p>Okay, probably not :-)
You want to automatically test student's code on a specific topic and don't want to spend time (nor money?) customizing things?<p>Sorry, there is no free beer.