DEV Community

Cover image for How I Automated My Grading Responsibilities

How I Automated My Grading Responsibilities

Jeremy Grifski on May 12, 2019

Originally published at The Renegade Coder on March 11, 2019 Since I started teaching, I’ve been trying to find ways to automate my grading respon...
Collapse
 
sobiwankenobi profile image
Sobi-WanKenobi

Why not teach them JUnit as a way of learning the language and doing TDD? While their tests may not be correct, it will help them to think about functionality ahead of time.

This will also change your testing requirement to behavior of the solution-- that is, blackbox testing. To your point, at this level, the guts of the projects may not be as important as a functioning project so maybe this is enough.

Collapse
 
renegadecoder94 profile image
Jeremy Grifski • Edited

We actually do teach JUnit in the second CS course. But, there are a lot of complications that make it hard to teach in the first place. In particular, it’s a 3-credit intro course (2 hours of lecture and 1 hour of lab a week), and a lot of the students have no interest in coding. Of course, the main issue was I didn’t have any control over the curriculum, though I suppose I could have snuck a lesson or two in.

They piloted a new way of doing projects last semester which had an online textbook where you could submit code for testing. It would show all the test cases you missed and how you missed them which I thought was pretty cool. Granted, it doesn’t really teach them how to test code themselves.

Oddly enough, I learned JUnit when I was in my first Java class, so I get where you’re coming from. It’s possible, and it would be great if the course moved in that direction in the future.

Collapse
 
techgirl1908 profile image
Angie Jones

As a former adjunct professor, I can appreciate this. However, how do the students get feedback on ways to improve their code?

Collapse
 
renegadecoder94 profile image
Jeremy Grifski

So, that’s kind of the cool part of a script like this. It handles the heavy lifting in terms of making sure that each solution is correct. Then, I have more time to actually comb through each solution and provide feedback.

At the end of the day, I still have to manually enter grades, so I take that opportunity for a little complement sandwich.

Collapse
 
techgirl1908 profile image
Angie Jones

nice!

Collapse
 
eliasmqz profile image
Anthony Marquez

🔥🔥🔥🔥🔥

Collapse
 
steelwolf180 profile image
Max Ong Zong Bao • Edited

Maybe incorporate the use of linters, style guide & CI/CD process.

Which email the student's results of their program if it fails the linter check?

Collapse
 
renegadecoder94 profile image
Jeremy Grifski

I like the idea of using a linter! I might try to add that as a step to the Python script. That said, we don't really enforce any sort of style as students are learning the basics. I encourage good style practices, but we don't teach anything formal at that level.

Unfortunately, the project just has too many constraints to be able to use existing tech like CI/CD, so I had to roll my own project. I'd also love to get students using version control, but, again, there's just too much they don't understand at that point.