CS50 AI Projects
Here are some of the projects I have completed for Harvard's CS50 Introduction to Artificial Intelligence with Python:
Search Algorithms
Degrees
Implementation of a Breadth-First Search Algorithm to find the degrees of separation between two selected actors, by films they have starred in.
Tic Tac Toe
Implementation of a Tic Tac Toe AI using a Minimax Algorithm with Alpha-Beta pruning. Randomisation varies the AI's moves where several have equal utility.
Knowledge
Knights
Solutions to 'Knights and Knaves' style logic puzzles using Propositional Logic and Model Checking.
Minesweeper
An AI that plays the classic Windows 'Minesweeper' game, using a knowledge base and inference to generate new knowledge about the game state.
Uncertainty
Pagerank
An AI that ranks web pages by importance - similar to the Google PageRank AI - using both a Random Surfer Model and an Iterative Algorithm.
Heredity
An AI that predicts the likelihood of members of a family having a 0, 1, or 2 copies of a gene, and a trait caused by that gene, using a Bayesian Network and Inference by Enumeration.
Optimisation
Crossword
An AI that generates crossword puzzles, by treating the crossword generation as a constraint satisfaction problem and using a backtracking search algorithm.
Learning
Shopping
An AI that predicts whether online shopping customers will complete a purchase, using the Scikit-Learn k-Nearest Neighbour classifier on a customer dataset.
Nim
An AI that teaches itself to play the game 'Nim' using Reinforcement Learning. A Q-Learning algorithm with ε-Greedy Decision Making is used to estimate the value of actions for game states.
Neural Networks
Traffic
An AI that identifies which traffic sign appears in a photograph, using a TensorFlow convolutional neural network.
Language
Parser
An AI that can parse sentences and extract noun phrases, using the context-free grammar formalism and the Python nltk library.
Questions
An AI that answers questions, by determining the most relevant document(s) using tf-idf ranking and then extracting the most relevant sentence(s) using idf and a query term density measure.