Content-Type: text/html Assignments
CSCI-E28 Projects


There are six assignments for csci-e28. You may work on your projects on any system, but the program has to compile and run on the Linux system .

Important Facts :
Please read these documents before
asking about Homework procedures and rules

Access to Projects

Some of these projects are password-protected. Your userid is your firstname initial followed by the first seven letters of your lastname. Your password is the last four digits of your Harvard ID number.

Project 6: Network Programming

For this assignment you have a choice. You can extend your pong solution into a two-player network-based game, or you can extend the web server shown in class and in the text.

NO LATE DAYS The last project has a firm deadline. In order to complete our grading in time for the final we shall not accept any late submissions for this last project.

Choice 1: wsng

A web server is much like a shell. A web server lists directories, displays files, and runs programs for users on other machines.

For this project you will take a bare-bones web server and make it a useful, flexible program.

Choice 2: netpong

Take your solution to pong, add some network code, play the game with other people across the Internet. The ideas and techniques in this program are the basis for network chat programs and other interactive network applications.

Project 5: smsh

The kernel will run programs if you ask it correctly: (fork, exec, wait). A shell is a program that allows convenient access to file and process managements.

The shell is also a programming language. Writing your own shell is the only way to understand what is really going on when you run commands.

Project 4: pong

Ritchie and Thompson at Bell Labs wanted to keep playing their space travel video game so they built software to support it. The result: Unix.

Jobs and Wozniak worked for Atari developing the video game 'Breakout'. The skills developed there went into the original design for the Apple.

Assignment 0: Self Test

Do these exercises on your own If you find these difficult, you are likely to find this course too difficult.

If you would like some feedback on whether you are prepared for the course, send your solution to problem 10 to molay

Project 0: more03, a Self Test

This short project has the format and style of a regular project. It is just shorter and simpler. Do this project and submit it if you like. It is not required. We will grade it, so you will see what the standards are like. But the grade will not count toward your course average. If you find this difficult, you are likely to find this course too difficult.

Project 1: wow

The who command lists the people using the system now. What about yesterday? Or two weeks ago?

Our first project is to write a program that prints out who logged in on any date you ask for. This project also gives you a chance to think about the value of buffering disk data.

Project 2: dulite

Unix/Linux, like all modern operating systems, organizes storage media into trees of directories. The Unix tool called du computes the total number of disk blocks used by files and directories in a section of the tree. For this project, you will write a subset of the du tool. In doing so, you will learn how to traverse a tree and perform operations on all the items in the tree.

Project 3: sttyl

The stty command is used to view and modify the terminal control settings for your console. In other words, stty allows you to determine how your current login session (for example) processes input and output, and to control these parameters.