Last time I taught the course (Fall 2000) we implemented a ray tracer for our project. This consisted of taking as input a description of a scene and producing an image as output. Re-doing the project this year is an option.
Another option is to write a library for compression, encryption, and decryption of English text. This is a more open-ended project which would allow you to come up with creative cyphers for secret communication and programs that try to break them.