
Ask HN: Looking for a simple solution for building an online course - r4victor
I want to build an online course on graph algorithms for my university. I&#x27;ve tried to find a solution which would let submit, execute and test student&#x27;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&#x27;m sure I can build a course using Moodle or another popular LMS with some plugin, but I don&#x27;t want to spend my time customizing things.<p>I&#x27;m interested both in platforms and self-hosted solutions. Thanks!
======
d--
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.

[http://www.autolabproject.com](http://www.autolabproject.com)

Features:

 _Autograding_ Grade any assignment in any language using any software
package. Instantly.

 _Scoreboards_ Encourage healthy competition with a real-time rank ordered
scoreboard.

 _Code Annotation_ Augment the autograde with additional feedback directly on
the student's code.

 _Cheat Detection_ Maintain academic integrity by comparing assessments with
each other and with past submissions. Uses Stanford's Moss Cheat Detector.

~~~
r4victor
Thank you. Judging by the description it's what I'm looking for. I couldn't
find a demo, so I'm not sure whether it satisfies the requirements or not, but
I will definitely try it.

~~~
r4victor
Now I understand why they don't have a demo.

~~~
alfonsodev
why?

------
nickjj
I could write a novel about this because I've been creating courses since 2015
but I'm going to keep it short.

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.

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

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.

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.

Expect to pay $100 / month for most platforms.

~~~
avaika
Why are you writing your own solution? Is it just for fun?

I was under impression that there are tons of opensource available platforms
to host courses.

~~~
nickjj
Before I made a decision to go with Thinkific I asked some of my students to
try out Moodle's demo site and the feedback I got from them was very negative.
The general census was it was too complicated and confusing to navigate their
UI and their video player is really really bad. For a video course, a good
video player is very important.

edX is a little better, but it's still not what I want from a course platform
and the amount of effort it would take to trim it down would be more effort
than writing my own platform.

I also looked at a bunch of WP plugins that are advertised as "course platform
in a box" and none of them looked appealing. The UI for all of them were very
poor and these plugins are massive beasts. I don't want to spend my time
hacking through someone elses WP plugin to customize it.

After looking at so many platforms and solutions I eventually came to the
conclusion that no matter what platform I choose i'm never going to be truly
happy.

If I went with Teachable from day 1, I think I would have been 80% happy and
may not have even decided to build my own platform, but at the end of the day,
the heart wants what the heart wants. I want to build my own platform and I
can do it. Being at ease mentally (even if it means working harder) is more
important to me than anything.

------
vvankrunkelsven
DataCamp has DataCamp Teach
([https://www.datacamp.com/teach](https://www.datacamp.com/teach)), which
allows you to create your own interactive content.

Disclaimer: I work for DataCamp

 __Edit __: there 's also a 'light' version available:
[https://github.com/datacamp/datacamp-
light](https://github.com/datacamp/datacamp-light)

~~~
applecrazy
What’s the pricing for the course builder? I only see pricing info for your
courses.

~~~
vvankrunkelsven
It's free, you just need to create an account and you can use the course
authoring tools.

------
w8rbt
Maybe look at Jupyter Notebook? It does much of this out of the box, but may
not be exactly what you are looking for.

[http://jupyter.org/about](http://jupyter.org/about)

~~~
westurner
nbgrader is a "A system for assigning and grading Jupyter notebooks."
[https://github.com/jupyter/nbgrader](https://github.com/jupyter/nbgrader)

jupyter-edx-grader-xblock [https://github.com/ibleducation/jupyter-edx-grader-
xblock](https://github.com/ibleducation/jupyter-edx-grader-xblock)

> _Auto-grade a student assignment created as a Jupyter notebook, using the
> nbgrader Jupyter extension, and write the score in the Open edX gradebook_

... networkx is a graph library written in Python which has pretty good docs:
[https://networkx.github.io/documentation/stable/reference/](https://networkx.github.io/documentation/stable/reference/)

There are a few books which feature networkx.

------
closed
I've worked on this problem a bit for python, and these were some of the
interesting tools that came to mind.

* nbgrader: tool for managing and grading submissions using Jupiter notebooks.

* codeocean.com: lets you put up a self contained notebook that people can run and clone online.

* ipython_nose: allows you to put unit tests inside a jupyter notebook.

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.

[http://authoring.datacamp.com/projects/](http://authoring.datacamp.com/projects/)

------
nateaune
If you create your course assignments in a Jupyter notebook then you can use
OK to grade them. [http://jupyter.org](http://jupyter.org)
[http://okpy.org](http://okpy.org)

------
ricklamers
I know about a platform calld Ans[1] that supports code submission for
assignments. It was built by a startup from TU Delft.

[1] [https://www.ans-delft.nl/](https://www.ans-delft.nl/)

------
SergioDA
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).

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

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

------
icebraining
My university uses Mooshak for that:
[https://mooshak2.dcc.fc.up.pt/](https://mooshak2.dcc.fc.up.pt/) (this is the
new version, when I attended they were using the previous:
[https://mooshak.dcc.fc.up.pt/](https://mooshak.dcc.fc.up.pt/))

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

~~~
r4victor
Hi! I'd like to share the details of a course with you and to hear about your
approach for designing such an app. Feel free to contact me: vds003 at
gmail.com

------
valeg
Try stepik: [https://support.stepik.org/hc/en-
us/articles/360000159673-Ty...](https://support.stepik.org/hc/en-
us/articles/360000159673-Types-of-assignments)

------
hackandtrip
An univerisity course I am following uses this CMS[1] to have that "basic
functionality" you are talking about.

[1] [https://github.com/cms-dev/cms](https://github.com/cms-dev/cms)

------
peeplaja
SaaS platforms for it are [https://teachable.com](https://teachable.com) and
[https://www.thinkific.com](https://www.thinkific.com)

------
qznc
At KIT they use Praktomat:
[https://github.com/KITPraktomatTeam/Praktomat/](https://github.com/KITPraktomatTeam/Praktomat/)

GitHub plus Travis CI is not enough?

------
mikeyjk
A company I've worked for in the past is an Australian company called
CourseGenius. Fairly affordable and has a free trial.

Avoid SCORM at all costs lol.

------
NamPNQ
I think replit ( [http://repl.it](http://repl.it) ) is what you looking for

------
mabynogy
I'd start with markdown (with hugo or jekyll) with <script src="..."> to do
the forms.

------
artpi
I dont know about automated testing, but wanna plug this question: :)

I am producing an online course on managing remote teams. I want to use
[https://www.podia.com/](https://www.podia.com/) Has anyone used it?

Regarding automated testing - I dont think this is a basic feature.

------
nateaune
If you create your assignments as Jupyter notebooks then you can use OK to
grade them. [http://juypter.org](http://juypter.org)
[http://okpy.org](http://okpy.org)

------
tolstogan
University of Universal Brothers?

------
dave84
Try Repl.it

------
ItsMe000001
The edX platform used by edX.com (of course) but also quite a few others is
open source.

[https://github.com/edx/](https://github.com/edx/)

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.

An entire platform may be a little overkill for what you want though?

> _I don 't want to spend my time customizing things._

Okay, probably not :-)

------
therealmarv
You want to automatically test student's code on a specific topic and don't
want to spend time (nor money?) customizing things?

Sorry, there is no free beer.

~~~
r4victor
I said nothing about money. I'm ready to pay for a tasty beer.

