Karen Reid

Senior Lecturer and Associate Chair for Undergraduate Studies
[Dept. of Computer Science]

Undergraduate Projects

I am involved in supervising a number of undergraduate projects in the form of CSC 494/495 courses and also some funded projects. I am primarily interested in developing tools for use in the classroom and systems-oriented projects. Below is an archive of past project descriptions. Current projects can be found on my home page.

Online Marking

We have been working on developing tools to help TAs grade programming assignments online since 2005.

OLM (short for OnLine Marking tool) aims to improve both the ease with which TAs grade programming assignments, and the quality of the feedback that the students receive. When a grader wants to mark an assignment, OLM displays the student's work in a two-pane browser view. The left pane shows the student's code, while the right pane shows a marking rubric. Graders can highlight sections of code using the mouse, then either apply a stock comment from the rubric, or enter a custom comment. Everything they do is stored on the server using AJAX, so that when marking is finished, the student can view the results in a similar read-only view.

We worked with Web-CAT in the summer of 2008 in the hopes of using it to allow students to submit assignments earlier, and get testing results back. We built a Python plugin for it, and did substantial work on an Eclipse plugin, but in the end we decided that it lacked some important features, and the development environment was too much of a hurdle to ask project students to work on.

Our current efforts are to take the best features from OLM and the testing ideas from Web-CAT and re-implement them in Ruby on Rails. The goal is to build a system that allows instructors to plugin different components based on their needs.

Here are two pictures from the three-day code sprint in January. The pictures show students working on two main projects: OLM, and Basie. Great fun, and hugely productive.

This project has been done with the collaboration of Jennifer Campbell and Greg Wilson, with funding from ITCDF grants and Google Summer of Code.

Operating System Visualization

Students in our third year Operating Systems course (CSC369) implement major components of a simple but realistic operating system, OS/161, on top of a hardware simulator. By instrumenting the simulator, we extract data that is used to display state information in a graphical form. This allows students to watch how the state changes as their code runs. The visualization tool currently provides a graphical representation of how physical memory is used by the operating system and the user-level threads that run on top of it. We will also provide students with ability examine the stack of the currently running thread, so that students can see how control switches between a user-level thread and the kernel.

We have made great progress on the prototype which is implemented in Java, but there is still lots of work to do. A longer term goal is to turn it into an Eclipse plugin.

Angela Demke Brown started this project, and we received funding from ITCDF to continue work on it.