The semester projects have two goals.  First, the topics are chosen so they extend and demonstrate your understanding of the material. Second, the requirements are designed so you experience the entire process of writing a reasonably complicated piece of code that other people can use.  That is, you'll be writing a library--a self-contained set of routines that perform a set of related tasks.

Projects may be done individually or in groups of two, but be aware that a two-person project is expected to be twice as cool as a one-person project.  Forming a project team with someone you don't already know well is not recommended.  You cannot keep the same group for both projects this semester.

Project Requirements

There are three deliverables for each project: topic, design, and code. Each deliverable should clearly include the date, class, and names and email addresses of everyone in the project group.  The topic and design papers will be collected in class, or can be delivered via BlackBoard.  The code will be delivered electronically by attaching the file to the BlackBoard assignment.  See the example project deliverables.
  1. A "Topic" paper, about one page long, describing what you plan to build and the calls a user will make when using this library.  Also include a complete (and very small) example code. A good project topic paper will describe:
  2. A "Design" paper, up to one page long, describing generally how you plan to write the code. 
  3. Finally, "Code", in the form of a small working library and example.

Possible Project Topics

Choose any one of these topics, or make up your own topic. If these seem too big, feel free to simplify them in your "topic" paper; if these seem too simple, feel free to add features. Be aware that a simpler project will be graded more strictly; while a more ambitious project will be given some leeway (but of course, it's still got to work!).

O. Lawlor,
Up to: Class Site, CS, UAF