During this course you will complete ten weekly labs with an assigned group. We will start each lab in class, but you are not expected to finish the lab during class time. You are expected to complete labs collaboratively with your group, not simply divide work between the group members. The list below shows the assigned and due dates for all of this semester’s labs.

    • Assigned September 7, 2022
    • Due September 14, 2022 by 11:59pm
  Virtual Memory
    • Assigned September 14, 2022
    • Due September 22, 2022 by 11:59pm
  Memory Allocator
    • Assigned September 21, 2022
    • Due October 5, 2022 by 11:59pm
    • Assigned October 5, 2022
    • Due October 12, 2022 by 11:59pm
  Password Cracker
    • Assigned October 12, 2022
    • Due October 28, 2022 by 11:59pm
  GPU Sudoku Solver
    • Assigned October 28, 2022
    • Due November 9, 2022 by 11:59pm
  Peer-to-Peer Chat
    • Assigned November 11, 2022
    • Due December 2, 2022 by 11:59pm


The following policies apply to all of the labs in this class. If you have any questions about a policy, please ask the instructor.

Collaboration & Academic Honesty

Unless you are given explicit permission to do otherwise, you must work with your assigned group for each lab. While I expect that you understand how to work collaboratively, I have found it is sometimes necessary to clearly state some expectations for group work: I expect every member of your lab group to contribute to the work you submit, and that work must be a product of your collaborative effort. That means you cannot divide the lab into parts and work separately, you cannot allow other members of your lab group to complete the lab for you, and you cannot complete the lab on your own without your group’s involvement.

Misrepresenting who has contributed to work you submit is a violation of the academic honesty policy, and I will inform the committee on academic standing of any such violation. These cases could result in a zero on the assignment, or in the entire course. If you find that your lab group is not contributing, or if your partner(s) completed a lab without you, please tell me immediately so we can resolve the issue before you submit any work.


Each lab will have its own criteria for what constitutes a correct submission, but all labs will have the same general grading breakdown:

20%  Code Quality
Does your implemention follow best-practices for implementation? Is it clear and concise? This will account for 20% of your grade on the lab. Any warnings or errors when building your code will result in an automatic zero for this portion of the lab.
80%  Implementation Correctness
I will evaluate your implementation to see how it handles various inputs and edge cases. In some cases this may be done with an automated test suite. I will give partial credit for labs that miss edge cases but handle the majority of inputs correctly.