Skip to content

Coding Exam Questions

Armando Fox edited this page Aug 5, 2019 · 1 revision

We have started administering some exams in which part of the exam is used to write code and/or tests that are autograded.

We have developed some bespoke VM-based infrastructure to support the exam environment and autograding, but the questions could also be used as the basis of manual exam grading. That is, the students would write the code and submit a repo or zipfile for grading (the code they have to write is too complex to do with pencil and paper).

Current exam question repos

You need to have instructor access for these repos. Note that the repos contain solutions as well as questions; instructions are provided in each repo's for creating just the student-facing part of the package.

  • Interview Scheduler: Modify an existing app to add the correct associations among Interviews, Candidates, and Recruiters. Factor out some common code among the models and mix it back in, to DRY out the code. [Solutions](/saasbook/exam-interviewscheduler-associations-
  • Incomplete Ruby Iterators Create Ruby iterators for a new Matrix class.
  • Can I Stream It? Enhance RottenPotatoes by adding a view that displays information retrieved from the API.
  • Encryption Demo Create this simple app that allows users to specify a key for symmetric encryption and to encrypt/decrypt text with that key.


A unique feature of the exams is that since the questions are multiple parts with later parts building on the results of earlier ones, each question subpart is associated with a hint and/or with the answer (i.e. code that if copy-pasted in the right place will solve that subpart). In our setup, students can "reveal" these hints if they accept a penalty of a substantial fraction of the points the exam question is worth. Read the papers below to find out how hints work in our exam-taking setup and how we have observed students using the hints.


We have written about the infrastructure and the effect of hints in two papers:

You can’t perform that action at this time.