30
Autograding tool (lemmy.world)

Hi, I teach a CS course, and I was wondering if there is a practical way in which to setup a server that would accept student's tar files, run some tests, and show them the results.

I could go "full unix mode" and roll up some accounts let them ssh into a server, scp their their files.... but I was wondering if there is a prepacked solution for this that is nicer to the eye. And I thought maybe you know some.

top 10 comments
sorted by: hot top controversial new old
[-] PeriodicallyPedantic@lemmy.ca 9 points 1 week ago

This is basically what CI/CD pipelines do.

Compile the code, run tests, run static analysis. If results pass, submit the code. If results fail, reject it with an explanation.

Idk the details of how you'd implement this for a class, without letting everyone see eachother's completed work, but I'm sure it could be done.

[-] EarMaster@lemmy.world 7 points 1 week ago

You could use automated testing tools to do the work for you. You define your requirements as individual tests and every input is tested separately giving you a report which tests failed and which succeeded.

[-] marcos@lemmy.world 6 points 1 week ago

If you use moodle, it has a plugin for that, with instructions.

If you don't use moodle, you may want to check the instructions on the plugin anyway.

[-] elDalvini@discuss.tchncs.de 5 points 1 week ago

My university used Artemis to do basically what you're describing. Files are uploaded via git. But it seems like selfhosting would be a lot of work.

[-] VeganCheesecake 3 points 1 week ago

Hey, that was made at my former uni. And now I'm wondering whether other unis adopted it. It always seemed like a neat solution.

Did a takehome for a company recently that did it well. They required that I make a docker file (you could give them one if you wanted) where when ran it would run tests. It was a neat use of docker IMO, it standardized that builds were just "build the docker file" and running was just "run the dockerfile". You would t have to deal with tar or anything then.

Thousand ways to skin a cat there

[-] JakenVeina@midwest.social 3 points 1 week ago

When I was in college, I took a 100-level CS course that required me to ssh into a server and run a command to submit my homework. It's not crazy.

[-] planish@sh.itjust.works 1 points 1 week ago* (last edited 1 week ago)

You could definitely build something like this. You definitely want either human review before execution or a fair amount of sandboxing for whatever your students submit.

Do you want students trying to brute force or exfiltrate whatever test data lives in the server? If not, either they should just have the test cases already, or they can get back how many/which of the secret test cases they passed along with their grade, so showing them the results live might not be so important. Unless you want something like "you have 3 tries to pass the secret tests so you can get a hint that your own tests missed a case and go back and try to guess what it was".

You also might want to invest time first in test harnesses for the students to run themselves, because you want them to learn good practices like coding against a test suite. If nothing else it makes it easier to make the auto-grader later if the students' code is all already hooked up to the same test framework.

Teaching students how to use fully use a multi-user Unix system can for some topics put unnecessary faffing about between the students and what they are trying to learn (are you teaching front-end web dev or something?), but in a lot of cases your students might actually be better served by something that makes them touch the deep magic than by a slick web UI that handles everything for them, as long as you turn it into a learning experience and not a protracted period of bafflement.

Does your school not already have some kind of shared CD department server/Unix environment for the students that could get you out of account management?

Also, the Right Way to get the code to the server is probably going to be Git and not a tarball. The students could/should be set up with a Git forge and indoctrinated in never leaving their code on their laptop to be sat upon and lost.

[-] billwashere@lemmy.world 1 points 1 week ago

I actually work for a large university in the digital education department. We do have tools like this but I’m pretty sure it’s for python. It could probably be modified for other uses however. I’m a hardware guy or I’d know more about it. If you’re interested I could probably get some more info or get you in touch with the devs that created it. DM if you want some more details.

[-] Markaos@discuss.tchncs.de 1 points 1 week ago

Charles university uses and develops something called ReCodex, and it is available on GitHub. As a student, it was very nice to use.

https://github.com/ReCodEx/wiki/wiki

this post was submitted on 25 Oct 2025
30 points (100.0% liked)

Selfhosted

52711 readers
183 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS