Programming Projects: Artificial Intelligence

CSCI 440, spring semester, 2005

 

Building HAL: Construction of artificial intelligence

 

Programming assignment #1 (NimGame.htm): Purpose: Get a sense of how a computer like HAL may play a game. Due: Thursday, Feb. 24.

 

Automatic Temporal Reasoning Project: Due: Thursday, May. 4.

¡P       Purpose: Write an intelligent program that can reason about events with time-interval information to get a sense of how a computer like HAL may conduct planning and reasoning about causes and consequences.

¡P       Requirements: Given a set of state variables, an initial state, a goal, events and the associated causal rules described in a file events.txt (in a format similar to what you see in Figure 1 of the paper on reason about events with time-interval information), your program should be able to conduct automatic reasoning to either (i) determine there is no event sequence that would bring the system to a state achieving the goal or (ii) provide an event sequence, the time the events occur, and what causal rules associated with these events are applied such that the system would end in a state achieving the goal.

¡P       Things to do:  As a first step, you should design and implement C++ classes for states, causal rules, and events so that you can simulate scenarios of what may happen in the discrete event system. Then you can proceed to implement a systematic search to solve the automatic reasoning problem, either by trying exhaustively all possible event sequences or using the multi-chain search algorithm described in the paper.

¡P       Temporal Projection Sample code:

1.     Download this zip file and play with the executable and a sample instance in testInstance.txt in it. We¡¦ll continue to discuss algorithms for automatic temporal reasoning and the source code. Much of the code implementing the TemporalSolver class in TemporalProjection.cpp is removed, but you can freely utilize any portion of the source code that I made public in the zip file.

2.     The executable in the zip file was compiled from the complete source code and can find and store a solution to the sample instance in testInstance_Solution.txt. You can create other temporal instances and test the executable to get a better sense of the temporal reasoning problem. 

3.     See the following online references to the standard bitset, map, vector classes from the C++ library. The implementation uses these classes extensively as building block.

¡P       Temporal Simulation Sample code: Download this zip file and play with the temporalProjection.exe executable in it and see how it can run simulation over the sample instance in testInstance.txt in it.

 

 

Automatic Spelling Correction Project: Due: Thursday, May. 25.

¡P       Purpose: Build an intelligent program that can learn to conduct automatic spelling correction. Get a sense of how a computer like HAL may conduct speech recognition (the same foundational framework used for automatic spelling correction).

¡P       Related documents: You should first study the introduction in this set of Power Point slides, a prototype demonstration program, the word model and the keyboard model used in the prototype program, the source code of the prototype program, and this collection of sample spelling errors.

¡P       Requirements: Given the vocabulary (i.e. a collection of words) in a file testVocabulary.txt and a collection of typos (i.e. individual character strings not in the vocabulary) in a file corruptedMessage.txt, your program should be able to conduct automatic spelling correction to the typos individually and output in a file recoveredTestMessage.txt that for each typo we recommend the top most likely words from the vocabulary.

¡P       Things to do: You can either write everything by yourself or utilize any portion of the source code of the prototype program you want. You should (i) devise and implement your own improved keyboard model to correct individual spelling errors, and (ii) if possible try to tap into the sample spelling errors to fine tune your keyboard model and the word model.