PyCon 2016 in Portland, Or
hills next to breadcrumb illustration

Tuesday 4:30 p.m.–5 p.m.

The computer science of marking computer science assignments

Katie Bell

Audience level:


When writing systems to test if beginner programmers' code was correct, I didn't expect to need numpy, scipy a custom C module and a whole lot of cool geometry algorithms. Giving actionable feedback on tasks (in this case logo/turtle vector drawings), is necessary for the learning process and goes some fun places. Take this as a case study of writing efficient geometry number crunching in Python.


Giving students fast feedback on their tasks is paramount to the learning process, but before you give this up as another how-to-teach-programming talk, keep reading – this is not for rookies. When your program has text based input-output it’s not so hard to automatically test if the program is correct or not. If you want to do fancy things like test independently of dictionary key order, then it’s a little trickier, but it only real becomes tricky if you want to provide more meaningful output for your students rather than just a pass or fail. Testing output which steers the rookie programmer in the right direction is a fine art and involves some complex computer science - especially when you want to mark vector drawing output from their programs and a bit-map image comparison just won’t cut it. Come along to learn some fun computational geometry algorithms, appreciate how awful floating point precision really is and see a classic example of making number crunching in Python not painfully slow. All written in Python and all in the name of helping kids learn Python.