Skip to main content

Experimenting with automated tests and labs in CSC258H1

··259 words·2 mins

After teaching Computer Organization the previous year, I had many ideas on what I wanted to do differently. One goal I had was to improve the feedback students received on their lab submissions. And my second goal was to introduce more concrete connections with the material to downstream courses like Operating Systems.

To achieve the first goal, I worked with Sophia Huynh on an initial framework for automated testing of circuits on MarkUs. Once the framework was set up, I created starter files for every lab. This was necessary for automated testing because, similar to how an API is defined in Python or other programming assignments, the circuits (and their inputs/outputs) needed specific names for the tests to work. This helped provide students with consistent feedback on the correctness of their circuits, allowing TAs to focus instead on their answers to questions (rather than the schematics themselves).

To achieve the second goal, I made minor changes to some lectures and major changes to the labs/project. The lectures now included more details on exceptions and interrupts, which connected very well with CSC369H1 and CSC385H1. But the major change was to eliminate the project. In its place, there were now 9 labs (rather than 7), with the final lab culminating in the design and implementation of a functional single-cycle processor. This was, in part, also because of feedback from students in course evaluations on the rushed nature of the project in the 20229 offering. I really liked this approach, and maybe one day soon I will get to iterate on it.