# Assignments

You will complete small individual assignments most weeks of the course to help prepare you for labs. These assignments will give you some hands-on experience with basic concepts and programming skills you will need on upcoming labs, but should not be too demanding. To help me calibrate these assignments, I’ll ask you to submit feedback on each assignment using the Assignment Feedback Form. Please fill out this anonymous form after each assignment.

Introduction
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
slides
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Processes
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
slides
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Assignment 1
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
System Calls
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Address Spaces
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
slides
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Assignment 2
• Assigned January 29, 2018
• Due February 5, 2018 by 10:30pm
Segmentation
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
slides
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Paging
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
slides
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Assignment 3
• Assigned February 5, 2018
• Due February 12, 2018 by 10:30pm
Swapping
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
How an Allocator Works
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Linkers and Loaders
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
No assignment this week
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Threads
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Locks
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Locked Data Structures
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Assignment 4
• Assigned February 19, 2018
• Due February 26, 2018 by 10:30pm
Condition Variables
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Concurrency Bugs
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
slides
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Parallel Programming Puzzles
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
slides
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Scheduling
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
slides
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Advanced Scheduling
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Multiprocessor Scheduling
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Assignment 5
• Assigned March 5, 2018
• Due March 14, 2018 by 10:30pm
Distributed Systems
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Assignment 6
• Assigned March 9, 2018
• Due March 16, 2018 by 10:30pm
Distributed Systems
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Distributed Systems
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
I/O and Storage Devices
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Files and Filesystems
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Assignment 7
• Assigned April 2, 2018
• Due April 9, 2018 by 10:30pm
Advanced Filesystems
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Big Picture
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Reading Journal 1
• Assigned April 11, 2018
• Due April 13, 2018 before class
System Design
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
About the Project
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Reading Journal 2
• Assigned April 16, 2018
• Due April 20, 2018 before class
Project Planning
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Garbage Collection
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Paper Discussion
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Reading Journal 3
• Assigned April 20, 2018
• Due April 25, 2018 before class
Models of Concurrency
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Project Working Day
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Paper Discussion
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Reading Journal 4
• Assigned April 25, 2018
• Due April 30, 2018 before class
Memory and Concurrency Bugs
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Paper Discussion
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Reading Journal 5
• Assigned April 30, 2018
• Due May 4, 2018 before class
Project Working Day
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Memory and Concurrency Bugs, continued
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Paper Discussion
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Reading Journal 6
• Assigned May 4, 2018
• Due May 9, 2018 before class
Software Profiling
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Project Working Day
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Paper Discussion
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Wrap Up
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Reading Day
• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Project Presentations

section 02, 9:00am–noon

• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm
Project Presentations

section 01, 9:00am–noon

• Assigned January 24, 2018
• Due January 29, 2018 by 10:30pm

## Policies

The following policies apply to all of the individual assignments in this class. If you have any questions about a policy you are welcome to ask about them individually or in class.

### Grading

Your grade on each assignment will be based on two factors:

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 assignment. Any warnings or errors when building your code will result in an automatic zero for this portion of the assignment.
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 assignments that miss edge cases but handle the majority of inputs correctly.

### Collaboration

These individual assignments are meant to be an assessment of your programming skills and understanding of the basic course material. Because these are meant to be individual assessments, you may not discuss assignments with any other students. Mentors may be able to help you if you are confused about the assignment requirements or have trouble understanding the man documentation for a function you’d like to use, but they cannot assist you in any way that requires them to look at your code or discuss your solution to the assignment. You are welcome to me for more assistance, although there may be some questions I cannot answer.