CEG 433/633:
Operating Systems

Thomas Wischgoll

Project Expectations

 

The project for an operating system course typically has at least the following dual goals:

The following are applicable to all your work (projects, home work, and exams) in the course, and will not be repeated in later handouts.

Plagiarism

These projects must be work done solely by you, except for any of the parts I provide.

Quality of Code

The implementation must be in C or C++ demonstrable on our Unix systems.

Subsequent parts build on the code you write. Make sure your source code quality is high. It is a subjective judgment. To be concrete about it, I suggest a few specifics below. Follow them vigorously, even if unwillingly. As you become a mature programmer, you will (guaranteed ;-) come to appreciate the benefits of this rigidity in style.

Keep the routines (methods), and files small. No routine should exceed, say, 20 lines (not counting comment lines). No file should exceed, say, 200 lines, or 4000 bytes. Some times a method is no bigger than a couple of lines. Do not hesitate to turn a code segment into a routine/method because it is then going to be called just once.

For every routine/method, carefully document its pre- and post-conditions. Caller is expected to satisfy the pre-conditions prior to the call. The method is designed and coded assuming that the pre-condition holds. To improve robustness, you may want to check the pre-condition, but, it is not expected that you do. The caller, upon return, expects that the called routine has accomplished what has been described in the post-condition.

Clarifications

Part of (large) program development is independently, but wisely, deciding what to do for certain "erroneous" situations. Should we ask the professor for what to do for every possible error you can think of? [Answer: No. You think about it. You take a reasonable action. You document this in your source code, and in ReadMe.txt. And, be ready to defend your choice should it be questioned.]  Should SimDisk() constructor printf or cout>> an error message? [No.] When does/should mkSimDisk() return a zero? [Think.]  Remember that one of the goals of CEG 433/633 is to make you think about larger programs. Part of this is to supply missing, but needed, details in the problem description.

Post all your questions, helpful comments, criticisms, and suggestions regarding this project to our channel on the department's Discord server. I am hoping for a lively discussion leading to good answers and clarifications. Keep an eye on this Discord channel.

Submissions

All submissions are done through pilot. The following files, with names exactly as indicated, must always be submitted.

Grading Sheet

A typical grading sheet is shown below. This is just a sample and not an actual grading sheet we will use to score your submissions. Each assignment has its own grading sheet at the bottom of the assignment description.  We try to read your code.  But we depend mostly on observed execution of your code.

All work for this course is expected to be done on a Linux system. Our grading of your submitted project work includes the execution by us on a current Linux machine. 

Bonus points are awarded in recognition of good work, in addition to the max possible points.  Quality is subjectively judged.  Merely turning in a file will not receive full score. Bonus points are used not in "curving" but in possibly pushing an individual student's grade up.

Subsequent parts build on the code you write. So, make sure your source code quality is high.

Some of the above have a cascading effect.

Student Login Bonus Points

 

Item description MaxPts Points
All required files are turned in and appear complete 5  
Every thing compiles without errors or warnings 5  
All the source code files are properly indented 5  
Builds into a usable executable 5  
typescript demonstrates that make test exercises well, and program works 10  
cmdsTried.txt shows use of at least 10 different Unix commands 10  
invkExplained.txt 10  
gdbSession.txt 5  
Multiple Disks 10  
Checking the Arguments 5  
Performance Measurement 10  
Enhancement of the Shell 10  
Robustness 10  
Total 100  
09/06/05 04:31:29 PM
Copyright © 2020 pmateti@cs.wright.edu, thomas.wischgoll@wright.edu