Lab guidance

Hardness of Programming Problems

Each programming problem on a lab indicates how difficult it is:

These times are rough estimates. If you find yourself spending more time on an assignment indicated, please let me know.

Lab Guidance and Rules

In general, the programming solutions for our Xv6 lab programming problems do not require lots of code (tens to a few hundred lines), but some of the code is conceptually complicated, requires you to think a lot, and attention to the details matter a lot. In many instances, I have simplified your work by providing a source code that you can replicate in Xv6. Be aware that a bug in operating system code can be bewildering and may require much thought and careful debugging to understand and fix. For this reason, adhere to the following lab rules.

  1. Do not start a lab the night before it is due. This is a recipe for disaster
  2. Work on the labs in several sessions spread over multiple days.
  3. Read the lab prior to the in class Lab Day for each particular lab.
  4. Use our in class Lab Days to ask questions, get help, and make progress.
  5. Complete assigned reading before programming.
  6. Study relevant code (both files and code snippets provided in the lab writeup) before programming.
  7. Consult any documentation listed for the lab before programming.
  8. Only when you have a solid understanding of the lab concepts and a solution design, then start coding.
  9. When you start coding, implement your solution in small steps (the assignments often suggest how to break the problem down in smaller steps) and test whether each steps works before proceeding to the next one.
  10. When complete, perform the Lab Submissions steps.

Debugging Tips

Here are some tips for debugging your solutions: