CS439 Fall 2014 Project Information
There will be five projects for this class, each emphasizing a
different set of important skills. You will begin by writing a shell.
Your other projects will exercise your knowledge of threads, user
programs, virtual memory, and file systems.
You will work on all of these projects in teams of two or more (as
specified in each project). You are responsible for forming a team with
someone with whom you will work well and resolving any problems that
arise during the partnership is your responsibility. If you are
unable to resolve a serious problem, the instructor will
Your team must follow a pair
programming methodology. In particular, both members (or, for the
later projects, all members) of the team must work together to
understand the problem, design your solution, enter code, and test
your solution. For code
member should type while the other(s) observes, detects tactical coding
defects, and thinks strategically about the overall design. These
roles must be frequently swapped. In general, studies [1,
suggest that pair programming works well: (1) counter-intuitively two
programmers working together at one keyboard produce about as much
functionality as two programmers working apart at two keyboards, (2)
the code produced in this manner is of higher quality than
individually programmed code, and (3) in
setting both team members learn more than they would separately.
Note that for these projects, these advantages of pair (or group)
programming over disjoint work are especially likely to apply: it is
vital that all team members understand all aspects of the
implementation. Also be aware that the exams will have questions that
required intimate knowledge of the project.
The projects will be challenging. We hope they will also be very
satisfying. The instructor and TAs will work to help you
succeed. Although the scope of the projects is ambitious, we will
provide a framework to guide your efforts and to ensure that you don't
have to spend a lot of time building uninteresting "glue" code. Our
hope and expectation is that everyone that works hard on these
projects will succeed. If you have other ideas for improving the
project, please let us know. Good
Check signup page is available. Please be certain to signup
according to the posted instructions, and you must signup for a time
by Saturday, 10/11, at 5p.
2014-10-08: I annotated the directions for hex_dump()
and took a picture. Each
item on the stack is color-coded to match the corresponding item in
the directions. I hope it helps!
Projects will be graded according to the grading criteria
found here. All code must
follow the C Style Guide.
Project 0: A Mini Shell
| Become familiar with shells, fork(), exec(), and signals
Project 1: Threads
thread state, and thread scheduling
Project 2: User Programs
|Understanding how user programs
interact with the OS
||Oct 13/Oct 24
Project 3: Virtual Memory
|Understanding paging, page replacement,
and other virtual memory concepts.
Project 4: File Systems
|Understanding file systems, including directory structure, file growth, and multithreading
||Dec 5 (No Slip Days)