Labs
A few important pointers as you prepare to work on a new lab:
- Don't start on a lab until it's been officially assigned. It's quite possible that I'm not yet done tweaking it for this semester, and you may be wasting your time.
- When a lab is assigned, start early. If you start late and come to your TAs or myself the day before it's due, we won't be all that interested in helping you out (at the cost of our own sleep).
- Read through the entire writeup before writing any code. If you don't, you will miss something important, and we will direct you back to the writeup if you ask a question that is answered therein.
- Remember that each lab is an individual assignment. Feel free to discuss approaches and general solutions with others, but recognize that every line of code you submit must be attributable only to yourself. Plagiarism will result in 0 points being rewarded for the lab for all parties involved.
- Ensure that your code compiles without error on ada. If your submitted code does not build – regardless of how minor the compilation error(s) – you will receive 0 points for the lab!
- Use Git correctly. The prelimlab summary might be helpful.
Remember, if you have any questions or concerns about the labs, please post them on Piazza! (And while you're at it, maybe you can answer a question or two as well.)
Have fun, and I hope you learn a thing or two!
- Lab 0: Preliminaries
(10 points)
- Assigned: January 11; Due: January 18
- Lab 1: Playing Poker
(30 points)
- Assigned: January 18; Due: January 25
- Lab 2: Graphs and Tours
(40 points)
- Assigned: January 25; Due: February 8
- A screencast demonstrating how to use the GNU debugger (gdb) to debug your code can be found on the screencasts page
- Here's a tutorial on how to use Valgrind to automatically find memory leaks (and other memory management bugs)
- Lab 3: Writing Your Own UNIX Shell
(80 points)
- Assigned: TBA; Due: TBA
- There are screencasts on getting started and using some advanced gdb debugging command (e.g., how to attach to a child process)
- Lab 4: Redirecting I/O
(30 points)
- Assigned: TBA; Due: TBA
- Lab 5: Writing a Dynamic Storage Allocator
(100 points)
- Assigned: TBA; Due: TBA
- There are screencasts on getting started and on how to implement a simple explicit list allocator
- Lab 6: A Web Proxy
(40 points)
Assigned: TBA; Due: TBA- Here are instructions for testing your proxy using the different approaches demonstrated in class