Please post project suggestions in a bulleted list:

  • something

Unless you're sure of your evaluation of the problem scope, please post any additions above and let Charlie move them down into the proper "slot" below.

Project suggestions appropriate for one of the first two projects:

  • hangman game (make a game that asks the user/player to guess a word and draw a hangman bit by bit with each wrong letter guessed)
  • implement a sorting algorithm (bubble sort, quicksort, whatever you like) -- remember to attribute code if you swipe someone else's (if you build your own sorting routine without looking at anybody else's code or algorithm this project becomes suitable for handing in later).

The below are appropriate for the 3rd and 4th assignment:

  • combination work -- if you want to make sure you do a good enough job, it's possible to submit several smaller projects (of the type suitable for earlier assignments) and use an "aggregate" strategy to write several different (perhaps unrelated) programs and submitting the collection as your assignment -- this isn't ideal (as I'd prefer that each student eventually be able to build larger more complex programs).
  • Network Packet Capture -- write an application that listens and records all data that is heard -- a lot of the hard work here will be in finding a way to present or display the data captured coherently
  • GameOfLife & variations
  • Network Discovery -- write an application that tries to go find (and identify?) other machines that are exposed on the network
  • [Suggestion by jober] An automatic GPA calculator. I looked at this a bit last year for the Admission department. It is more complex than it would seem at first glance, due to the way some classes (i.e., AP or other advanced standing classes) are weighted more heavily than others, and because some schools use a sliding-scale GPA calculation, or some other non-standard (that is, not the regular 4.0) GPA scale. The idea would be to create a program that would take a student's grades and the relative weight of each class on the student's transcript and return a GPA score.
  • [jober] An application which would automatically generate Parent/Adviser Meeting schedules for parents visiting campus on Family Weekend. This is several orders of magnitude more complicated than it would appear at first glance due to some of the less readily obvious variables in play. Talk to Justin or Karen Advokaat in Academic Affairs for a brief rundown of what would be involved.
  • Quines -- do some work building or examining different types of quines
  • Survey -- do some work to build a survey framework and then actually use it to poll people -- this isn't usually difficult programming (in terms of writing the actual code compared with implementing some scientific function for instance) but it's a good idea to have an end goal "outside of technology" like this. It helps us to understand the the role of computer science is often to be a tool for other disciplines.
  • Iphone app -- you'll have to look for help somewhere other than me on this, but perhaps Kyle will assist if you're interested
  • Google app -- again I don't have much personal experience (yet) but I will be happy to try to help out if you get stuck on something if you want to try this route.
  • Web application -- You need to narrow-down and pick a specific idea yourself because this is very open-ended. we've talked about django, zope, plone and web2py in class. The sky is the limit here but if you want to learn how to code for the web I can actually offer quite a bit of help.

The below are appropriate for the final 5th and 6th assignments:

  • please check http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/Assignments/index.htm for ideas
  • Work with Monty (mhill06) and Charlie on designing and implementing a web interface for Monty's Tuscarora language database (it's a complicated technical linguistic "capture" attempt using granularity down to the morpheme level). This problem will have several significant challenges associated with it, but if you're interested I'm sure Monty will be glad for the help. So far there's no detail set in stone except for one (the choice of database is PostgreSQL) and I'm currently trying to help Monty with correctly setting up the database schema (if anyone is interested in that, sooner is better than later).
  • Create a working GeneticAlgorithm implementation of some sort or another
  • Help Charlie, Peter Lai and Steve Bohrer design, test and setup an OpenVPN solution (that will be available for any traveling Simon's Rock student, staff, or faculty to use to get "in" to the Simon's Rock network from afar (to access library resources for instance)). This project may not ever have need of a single line of python code (though whoever helps is guaranteed to learn *something*). See OpenVpn for more.
  • Help Charlie, Peter Lai and Steve Bohrer (and perhaps some eager CAs) to design, test and deploy a "thin-client" solution using either edubuntu or debian-edu (or some other free and open-source project that accomplishes something similar). See ThinClients for more
  • ontological work building database schemas for human language (English, Spanish, ...) or even more complicated structures (that have too much complexity to live in a relational database elegantly) -- this is a more generalized problem from the one Monty is specifically trying to solve for the Tuscarora language.