While visual programming languages are hardly a new development, recent pushes for increased equity and access to computer science have led to a renewed interest and use of visual programming languages. Autograders are a critical component of both in-person and online computer science courses. However, until this point, there haven't been any autograders documented for general-purpose, visual programming development environments. This is a particular shortcoming as introductory courses have scaled to larger numbers of students and online environments. While there are challenges to using autograders, we believe that the instant feedback capabilities, as well as potential time savings for course staff will help us teach a greater number of students.

Over the past year, we have built an autograder, named λ (Lambda), for Snap!, a visual blocks-based programming language inspired by MIT's Scratch. The primary motivation for developing the autograder was to run a series of Massive Open Online Courses (MOOCs) on edx.org throughout the 2015-2016 academic year. However, we also wish to use the autograder to better support in-person computer science courses. In Spring 2016, the Snap! autograder was used as a part of UC Berkeley's CS10, _The Beauty and Joy of Computing_, a "CS0" non-majors course.

This report describes λ, which consists of a "backend" Ruby on Rails webserver that allows us to use the autograder in a classroom setting, through a protocol called LTI. The backend web application contains a database of questions and test files, while the Snap! interface contains new features and a view to present the results of the autograder. Our initial results show the autograder successfully being used in CS10, where the autograder was used to supplement oral lab checkoffs, and on edx.org where the autograder was the primary method for students to receive credit for code, graded both for effort and correctness.




Download Full History