Lab guidance

Hardness of assignments

Each assignment indicates how difficult it is:

These times are rough estimates of our expectations. For some of the optional assignments we don't have a solution and the hardness is a wild guess. If you find yourself spending more time on an assignment than we expect, please reach out on piazza or come to office hours.

The exercises in general require not many lines of code (tens to a few hundred lines), but the code is conceptually complicated and often details matter a lot. So, make sure you do the assigned reading for the labs, read the relevant files through, consult the documentation (the RISC-V manuals etc. are on the reference page) before you write any code. Implement your solution in small steps (the assignments often suggest how to break the problem down) and test whether each step works before proceeding to the next one.

Warning: don't start a lab the night before it is due; it's more time-efficient to spread the work over multiple days. The manifestation of a bug in operating system kernel can be bewildering and may require much thought and careful debugging to understand and fix.

Debugging tips

Here are some tips for debugging: It is well worth the time learning the above-mentioned tools.