Project 2: The final frontier

posted Dec 19, 2016, 6:51 AM by JonAlf Dyrland-Weaver   [ updated Jan 23, 2017, 8:20 AM ]
PROJECT DUE: 8am Tuesday, 1/24

PROPOSAL DUE: 8am Friday, 1/6

Important note: In order for me to modify your design document, you must add me to your github repo. Please use the account stuydw. 

The final project is to be a significant piece of work that illustrates many of the ideas and techniques studied in the class. Highlights include:
  • Allocating memory.
  • Working with files.
  • Finding information about files (stat and such).
  • Processes (forking, exec etc.).
  • Signals
  • Pipes (named and unnamed).
  • Shared memory, semaphores.
  • Networking.
You should work with at least one partner, groups of 3 are acceptable. Larger groups require my approval.

Documentation Specifications
In addition to your code files, you will have to include the following documents:
  • Makefile This should build the project when I type make.
  • README This should list project members, how to compile and use your project and a list of all the files that should be in the repository.
  • DESIGN The design document
Design Document
Each student or group must create a file in their repository named DESIGN. The file should be a plain text file and it should contain the following.
  • The names of the people in the group.
  • A statement of the problem you are solving and/or a high level description of the project.
  • A description as to how the project will be used (describe the user interface).
  • A description of your technical design. This should include:
    • How you will be using the topics covered in class in the project.
    • How you are breaking down the project and who is responsible for which parts.
    • What data structures you will be using and how.
    • What algorithms you will be using, and how.
  • A timeline with expected completion dates of parts of the project.

Proposal Stage:
  1. Put together an initial design document with all the parts that are required.
  2. Upload your design document to github
  3. I will read the design documents, and when I approve them I will put at the very top of the file: DW APPROVED
  4. After that point you can go ahead and work on the project.

Project Notes
You can use any external libraries you'd like, for example, gtk for windowing, sdl for games, etc. but you must do the following:
  • Make sure to mention any libraries in the README where you describe compiling instructions.
  • Check with me to make sure we can install them.
  • Make sure your program will run in the cs lab computers.
  • Make sure they don't trivialize a systems programming aspect of the project.
  • If you are doing networking, make sure to specify the IP address and port in an include file. You should test with That's the "loopback" address, it connects to itself. You can use that to test even if your machine isn't connected to the internet.