6.s096 2013

Final Project

Due: Thursday, January 31 at 11:59pm
Group Size: 1—3 people

Your task is to make something nifty using primarily C or C++. The title of your project should be a statement of the problem it solves. For example:

The only requirements are that the project is appropriate in size for the number of people working on it, that it compiles and runs without any significant problems, and that you link with at least one third party library. We list some libraries you might be interested in below.

Use this as an opportunity to use many of the language features we presented in class, perhaps more than are actually called for by your project.

If your project doesn't run on Windows, Linux, or OS X (maybe it runs on phones or robots), you should submit a short video of it in operation.

- Starter Kit

If you're having trouble getting started, perhaps you'll find what you need in the Starter Kit!

- Submit

Include a README file with a description of your project, like this:

Title: The 6.s096 web site was not a PDF file
Creators: Tom Lieber   dynamic@
          Frank Li     frankli@
          Kyle Murray  kimurray@

Our nifty program downloads every page on the 6.s096 web
site, then combines them into a single PDF document. This
is clearly superior to a web page in ways that should be
intuitively obvious to the most casual observer.

How to Compile:

  Install Haru:
    Download https://github.com/libharu/libharu/tarball/master
    tar -xvzf libharu-X.X.X.tar.gz
    cd libharu-X.X.X
    ./configure --with-zlib --with-png
    make clean
    make install

  Compile our program:
    gcc -Wall -std=c99 scrape.c -lhpdf -lpng -lz -lm -o scrape

How to Use:

  Look in the output/ directory for your PDF

Video of it in Action:


Submit your project's source code with such a README using Stellar.

If your project runs on Windows, Linux, or OS X, you should make it as easy as possible for us to compile it because we have to compile 100 projects. Provide us the exact commands to run, or a Makefile (you can learn about those here and here).

If you need or want to include a video, host it somewhere (perhaps your Athena web space, or YouTube) and include a link in the README. Video is only required if you don't expect us to be able to run your program ourselves.

- Example Projects


Use wxWidgets to create a countdown clock. Then keep going: allow multiple countdowns, display the time in words, or make it look cool.

Pepperoni Placement

Use Cinder to create a game where you place pepperonis on a pizza without any of them overlapping or going off the edge. (It's fun in real life, trust me.) Then keep going: by the end of their tutorial, you'd have a particle system with which you could add sweet effects.

-Third-Party Libraries

You must use at least one third-party library. Here's a list you can use for inspiration. Can you think of more?

2D/3D Games










*Packages that seem to be installed on Athena.