Labs

This section contains the laboratory assignments for the course. Some of the assignments refer to files that are located on class machines. Since only enrolled students can access these machines, these files are not available at this time.
Lab assignments
Getting Started with 6.824 Labs (PDF)
Lab 1 - Simple web proxy (PDF)
Lab 2 - Concurrent web proxy (PDF)
Lab 3 - A TCP proxy (PDF)
Lab 4 - SFS (PDF)
Lab 5 - Distributed ticker tape (PDF)

Aids for Working on Lab

There are a number of resources available to help you with the lab portion of this course:

  • FreeBSD architecture: You can find a good summary of how FreeBSD works in an appendix to the Operating Systems Concepts book by Silberschatz, Galvin, and Gagne. (FreeBSD is the UNIX variant running on the 6.824 machines.)
  • UNIX network programming: W. Richard Stevens' books UNIX Network Programming, Volumes 1 and 2, are classic references for network programming. If you are struggling with the sockets interface it could be a helpful purchase. See the suggested books list for other helpful references.
  • core files: When/if your program crashes it will leave a core file behind (named something.core). Examining core files with gdb is a valuable way to learn what went wrong. To get started with gdb type: "gdb program program.core" and then type the gdb command "bt". GDB will return a trace showing exactly where the program crashed. GDB offers many more features. Check out the GDB manual for full documentation.