Next: Synchronization Up: Experience
With Nachos Assignments Previous: Experience
With Nachos Assignments
General Tips
-
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).
-
Use of code browsing tools (e.g., the emacs ``tags'' facility)
greatly simplifies the reading and understanding of source code.
-
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.
-
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.
-
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.
|
Nachos
Tutorials
Roadmap
Source Code
Introduction
Threads
Interrupts
Synchronization
System Calls
Exception Handling
Multiprogramming
File System
Networking
Tutorials
Lab 1 Tutorial
Lab 2 Tutorial
Lab 3 Tutorial
Lab 4 Tutorial
Lab 5 Tutorial
|