Labs

During this course you will complete seven 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.

  Shell
    • Assigned September 11, 2024
    • Due September 18, 2024 11:59pm
  Virtual Memory
    • Assigned September 18, 2024
    • Due September 25, 2024 11:59pm
  Memory Allocator
    • Assigned September 25, 2024
    • Due October 9, 2024 11:59pm
  Worm!
    • Assigned October 9, 2024
    • Due October 16, 2024 11:59pm
  Password Cracker
    • Assigned October 16, 2024
    • Due October 30, 2024 11:59pm
  GPU Sudoku Solver
    • Assigned November 6, 2024
    • Due November 13, 2024 11:59pm
  Peer-to-Peer Chat
    • Assigned November 13, 2024
    • Due November 20, 2024 11:59pm

Policies

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.

While I expect the work you submit to be the result of work with your group, you may discuss labs with other groups. You are welcome to discuss conceptual details and programming-related challenges with others, but please do not discuss the code you plan to submit with anyone other than your group. As a general guideline, discussions between groups that take place away from a computer screen are generally acceptable, even if you do end up writing down some small code snippets on a whiteboard or notepad.

Grading

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.