next up previous contents
Next: Synchronization Up: Experience With Nachos Assignments Previous: Experience With Nachos Assignments

General Tips

  1. Use a debugger. Nachos programs simply cannot be debugged by looking at source code or inserting print statements. Unfortunately, that is what many students do (with obvious consequences). I found it necessary to force students to learn to use a debugger (e.g., no help in office hours otherwise).
  2. Use of code browsing tools (e.g., the emacs ``tags'' facility) greatly simplifies the reading and understanding of source code.
  3. Students don't always test programs well. If it works on one test case, they assume it works for all of them. For those studying operating systems for the first time, designing test cases is particularly difficult. When grading programs, it was not uncommon for student-supplied test programs to work, with all of my test cases failing. I found that I got much improved submissions by supplying concrete test programs that students had a chance to experiment with themselves.
  4. The Nachos assignments included in the distribution are very general and leave out many details. I got much better results by providing more detail about what needs to be done and how to do it. Although students get a benefit greatly from figuring out things on there own, I found too many students were getting lost and frustrated. Students with weak backgrounds are especially vulnerable. Later subsections (and indeed, this entire document) provide examples of such additional details.
  5. Students have a tendency to try to solve the entire problem at once, rather than one step at a time. This is particularly problematical with Nachos, because students often don't understand the big picture. I found it useful to break up an assignment into smaller standalone pieces, each building on the previous pieces, with a rough indication of the weight for each part. There are two benefits. First, solving one component of an assignment frequently leads to a better understanding of the issues necessary to solve subsequent components. Second, students know how much credit they will receive for the work done so far, and can better decide whether they should keep working on a project or use their time in other ways.

next up previous contents
Next: Synchronization Up: Experience With Nachos Assignments Previous: Experience With Nachos Assignments

Thomas Narten
Mon Feb 3 15:00:27 EST 1997