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.
Assignments are to be done individually, unless stated otherwise in the assignment specification.
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.
Assignments are to be submitted on time to your TAs using the submit system. For a brief overview, see David Ma's CPSC 457 TA page.
Assignment 1: The Unix Shell
Details on Assignment 1 are available here. It was due on Thursday, October 2 at 11:59pm. Suggested grading scheme.
Here is a sample solution courtesy of student Tom Flanagan. README biggies oldies Makefile myshell.h myshell.c userinput.c processline.c runcommand.c
Here are my own shell script examples: biggies oldies
Assignment 2: CPU Scheduling
Assignment 2 is available here. It was due on Thursday, October 23 at 11:59pm. Here are some starter tips as well.
Here is the suggested grading scheme, along with the pieces of a sample solution: spinner.c victimize.c fork.c hider.c ass2.out
Assignment 3: Memory Management
Assignment 3 is available now. It is due on Thursday, November 20 at 11:59pm. Here are some starter tips.
Here is the suggested grading scheme.
Here is a sample solution courtesy of student Amber Ott. README Makefile snap.c snapshot.c snapper.h unistd_32.h syscall_table_32.S SimpleSnapshot Filtering Zooming Movie
Assignment 4: File Systems
Assignment 4 is available now. It is due on Tuesday, December 2 at 11:59pm. Here are some tips.
Here is the proposed grading scheme.
Here is a sample solution courtesy of student Mark Przepiora.
README
revcat.c
read_write.c
inode.c
balloc.c
xattr.c
random.c
random.h
QuickTime movie showing random block allocation