Lab guidance

Hardness of assignments

Each task indicates how difficult it is:

These times are rough estimates of our expectations.

The tasks in general require not many lines of code (a few hundred lines), but the code is conceptually complicated and often details matter a lot. Some of the tests are difficult to pass.

Don't start a lab the night before it is due; it much more time efficient to do the labs in several sessions spread over multiple days. Tracking down bugs in distributed system code is difficult, because of concurrency, crashes, and an unreliable network. It requires thought and careful debugging to understand and fix.

Development/Debugging tips

It is well worth the time to follow these tips.