
ARTIFICIAL INTELLIGENCE COURSE PROJECTS
OVERVIEW
We had four major projects in our Artificial Intelligence course during the MSR program. An overview of the projects is listed here, though I am not allowed to post any code since these projects are reused for course assignments.
MANCALA PLAYER
We were tasked with developing a smart Mancala player that would have to play in a tournament against the rest of the class. We first researched what optimal strategies there could be to win Mancala and made sure that all of our moves (and predicted opponent moves) were analyzed by a game board evaluator function. We then utilized an alpha-beta pruning search algorithm, as is commonly used in computer players of Tic-Tac-Toe and Chess.
SUDOKU SOLVER
The goal of this project was to code a computer solver of Sudoku that could solve 4x4, 9x9, 16x16, and 25x25 boards. We used backtracking to keep track of our solved entry values and a few forward checking heuristics to make decisions on which entries to solve next. These heuristics are:
Most Constrained Variable (MCV) where we choose the entry that is linked/constrained by the most other values
Minimum Remaining Values (MRV) where we choose the entry that has the least number of values left
Least Constraining Value (LCV) where we choose the entry that rules out the fewest number of values for other variables
Our Sudoku solver was successfully able to solve even the 16x16 boards in less than one second.
SENTIMENT ANALYSIS
The assignment was to create a program that could perform a sentiment analysis and categorize movie reviews into positive or negative.
In order to do this, we had a training set of data to train the classifier by creating two dictionaries (one positive and one negative) from the group of training files. We then utilized a Naive Bayes Classifier to calculate the conditional probability of each word in the review, taking into account prior probability. The classifier then classifies that review into positive, negative, or neutral. To help with this process, we also created a dynamic ignore list which contained words and phrases that were common to both. We used a 10-fold cross-validation to evaluate the classifier and made sure that our training data was not included in the testing data.
SKETCH RECOGNITION
The goal of this project was to be able to determine whether a pen stroke was part of a drawing or a letter. We did this by developing a classifier that implemented the Viterbi algorithm. The classifier was evaluated using 10-fold cross-validation.