Ask HN: Looking for a simple solution for building an online course

68 points by r4victor ↗ HN
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.

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.

I'm interested both in platforms and self-hosted solutions. Thanks!

37 comments

[ 3.0 ms ] story [ 77.1 ms ] thread
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

nbgrader is a "A system for assigning and grading Jupyter notebooks." https://github.com/jupyter/nbgrader

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/

There are a few books which feature networkx.

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

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

DataCamp has DataCamp 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

What’s the pricing for the course builder? I only see pricing info for your courses.
It's free, you just need to create an account and you can use the course authoring tools.
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.

I said nothing about money. I'm ready to pay for a tasty beer.
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/ Has anyone used it?

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

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

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.

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.

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

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.

Strong recommend for Autolab as well. In addition to the features above. Front end is also easily extensible for custom activities.

Behind the scenes of course, are Docker multi-stage builds for submitted code. And I dare say, if your class is <1000 students. You can roll your own build environment on a single small cloud instance.

http://autolab.github.io/2015/05/autolab-and-docker/

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.
(comment deleted)
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.

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/

University of Universal Brothers?
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'd start with markdown (with hugo or jekyll) with <script src="..."> to do the forms.
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.
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.
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