Assignments
CPSC 457 will have four programming assignments. In aggregate, the assignments count 30% toward your final grade in CPSC 457. Each assignment will be graded on a percentage scale. All assignments will be equally weighted, even though they might not be of equal difficulty.
Assignments are to be done individually.
Some possible ideas for assignments are: writing a shell command interpreter; adding a new system call to the Linux kernel; implementing size-based scheduling in the Linux kernel; evaluating file system space allocation policies; designing a simple encrypted file system; and elevator scheduling policies for disk subsystems.
Assignment solutions are to be submitted directly to your assigned TA via email, on or before the stated deadline.
Assignment 1: Shell Programming and C Programming
Assignment 1 is available here. It was due on Monday, February 1 at 11:59pm.
Here are some example solutions from selected students and myself:
numfiles.sh
numbytes.sh
larger.sh
morefiles.sh
numbytes.c
Assignment 2: Process Management
Assignment 2 is available here. It was due on Monday, March 1 at 11:59pm.
Here is an example solution courtesy of student Patrick O'Donnell:
README
pid.c
unistd_32.h
syscall_table_32.S
PIDspacer.c
unistd.h
Transcript
Assignment 3: Memory Management
Assignment 3 is available now. It was due on Monday, March 22 at 11:59pm.
Here is an example solution courtesy of student Chenzhe Qian:
README
boot.sh
fork.c
user.c
unistd_64.h
sharedVmExample1.c
sharedVmExample2.c
Output
Assignment 4: Storage and I/O Systems
Assignment 4 is available now. It is due on Monday, April 12 at 11:59pm.
Extension granted to Wednesday, April 14 at 11:59pm.
Here is an example solution courtesy of student Bon Adriel Aseniero:
README
stasher.c
client.c
client output
server output