Final Projects

CSCI E-220 Artificial Intelligence

Project Proposal Due: November 17, 2011
Assignment/Project Due Date: December 15, 2011
Project Presentations: December 15, 2011 (with spillover to Dec. 8th if necessary)

For the final assignment of this semester you will follow your own interests with a programming project of your choice. Areas suitable for this project include any area of Artificial Intelligence, including areas we have and have not covered. You may work in Syntax and Semantics, Machine Learning, Neural Networks, Expert Systems, Genetic Algorithms, Computer Vision, etc. If your interest is in an area we haven't covered yet, talk to me soon to make sure that you will have enough background information to get started.

Projects need not be programmed in LISP. If you are more comfortable in Java, C, C++, etc., feel free to use one of those. However, projects must be programming projects, and the final executable must run either on the ICE machines at Harvard, or on a bare-bones PC or Macintosh. The bottom line is that I must be able to run it without buying myself a new computer!

If you are at all uncertain about your plans, please get a preliminary proposal, or an attempt at one, in to me before Thanksgiving. Your proposal should explain the area you want to work in, and the specific project you hope to complete. The sooner you send me something, the sooner we can talk about it. In its final form, your project must show evidence of substantial creative work, as would be expected of a major term project -- perhaps twice the length of the major programming assignments this term.

In January, we will have project presentations. These presentations will be short, informal talks and demonstrations, intended to give us the flavor of your results. You will be able to talk for about 10-15 minutes, depending on class size.

Project grading is based on a rubric that takes into account the following areas. Numbers in parentheses show the relative weighting of these components:


Below are some project ideas from previous years. I also have a complete Computer Vision assignment that I've used parts of in the past but couldn't squeeze in this year, that I would be happy to share with anyone who is interested in Computer Vision (or who isn't sure what else to do). However, I would prefer that students first try to come up with a project on their own.

• A chess-playing program that made use of new research in game playing trees, and also incorporated a Samuels-style learning algorithm.

• A Java-based "concert agent" that searches the web for information on bands and musical events, attempts to parse web sites for pertinent information, and presents the results in calendar form. Written as a Java applet; GUI front-end.

• A neural network to simulate the visual processing of the retina in non-mammal vertebrates, based on descriptions from a biology text. Written in Perl. Input and output in text.

• A Java program that took scanned images of jigsaw-puzzle pieces and figured out how to put them together.

• A LISP program to produce a 4-part chorale production from an initial chord input and a line of base notes, following rules of acceptable musical style, and searching for acceptable paths.

• A C program to smooth a grayscale pixel map and perform edge detection.

• Solutions to various parts of the blocks-world computer vision problem.

• A robot program that logged into MicroMUSE and attempted to learn grammar by speaking with people and asking for help.

• A language learner Markov-chain algorithm that built on, but went well beyond, the problem in assignment #7.

• A Markov-chain algorithm to attempt to determine authorship of various works.

• A simple OCR (optical-character recognition) program that worked using neural nets.

• A neural net model in economics that used demographic data to forecast single-family housing starts.

• A genetic algorithm scheduler for a children's soccer league.

• A genetic algorithm to solve a mathematical tiling problem.

• An attempt to win the Netflix Prize.