Mihir Rao

AI/Machine Learning

Parser

Python, NLTK

Parsing is the process of determining the structure of a sentence. In the field of NLP(Natural Language Processing), this can be very useful and can give computers a better idea of what a piece of text means. In this code, we attempt to break down text into what are known as terminal symbols(ie. nouns, verbs, adjectives, etc...).


  Code   Description

Questions

Python, NLTK

Question Answering (QA) is a large field within natural language processing. Some famous QA systems are Watson(the IBM computer that won Jeopardy), Apple's Siri, and Amazon's Alexa to name a few. However, answering systems of these accuracy require enormous complexity and vast amounts of data. In this project, I implement a much simpler version using tf-idf(Term Frequency—Inverse Document Frequency) and QTD(Query Term Density).


  Code   Description

Traffic

Python, TensorFlow, Keras, Numpy, OpenCV

Self driving cars are getting more and more popular but the challenges of computer vision still remain. In this project, I use TensorFlow and a few other Python libraries to train a Convolutional Neural Network using the GTSRB data set, which then allows it to recognize and label various different traffic signs.


  Code   Description

Shopping

Python, SciKit Learn

The ability to predict users' movements on websites is extremeley useful for targeted ads. Given information about a user — how many pages they’ve visited, whether they’re shopping on a weekend, what web browser they’re using, etc. — this classifier will predict whether or not the user will make a purchase using sklearn's k-means classifier.


  Code   Description

Nim

Python

In the game of Nim, two players take turns removing objects from several different piles. Each player, per turn, can remove any non-negative number of objects from any non-empty pile. The last person to remove an object loses. In this code, the computer learns how to play Nim using reinforcement learning.


  Code   Description

Crossword

Python

Given the structure of a crossword puzzle and a list of words to use, how might we go about which words are to be placed in which spaces? In this constraint satisfaction problem, we use the idea of unary constraints(word length = spot length) and binary constraints(words' constraints with their neighbors) to help the computer determine the best spots for each word.


  Code   Description

PageRank

Python

This project is a simplified version of Google's PageRank, which was originally created by Larry Page and Sergey Brin. The goal of this algorithm is to rank pages based on "importance," which in this case, is the number of pages a given page links to. To learn more about the algorithm's implementation in this project, click below!


  Code   Description

Heredity

Python

This is an AI to determine the likelihood that a person will have a particular genetic trait given information about people, who their parents are, and whether the parents possess a certain trait or not. Through a Bayesian Network, these relationships become much easier to represent and ultimately, for the computer to understand.


  Code   Description

Minesweeper

Python

Minesweeper is a famous puzzle game that consists of several grid cells, some which are considered mines. Clicking a mine results in a loss, while clicking a safe cell reveals a number which indicates how many mines surround that given cell(diagonally, vertically, or horizontally). In this code, the computer uses logic to play minesweeper!


  Code   Description

Knights & Knaves

Python

Knights & Knaves is a famous logic puzzle with rather simple rules. In the puzzle, each character is either a knight or a knave. Knights are always truthful and Knaves always lie. In this code, the computer is given a series of statements from seveal characters and has to determine who's a Knight and who's a Knave using propositional logic.


  Code   Description

Tic-tac-toe

Python

In this code, the computer learns how to play Tic-tac-toe using the popular Minimax algorithm. By working backwards from the goal state to the current state, the computer is able to make moves which it knows is the best.


  Code   Description

Degrees

Python

According to the Six Degrees of Kevin Bacon game, anyone in Hollywood can be connected to Kevin Bacon within 6 steps, where each step is considered to be a movie in which both actors starred in. Given a list of movies, actors, and movie-actor pairs, this code links any two actors through movies using the shortest path possible.


  Code   Description

Projects

3D Rendering

Python, Numpy

This is a project I worked on at school as part of our math class. The goal was to use matrices and other aspects of linear algebra and apply it to the realm of 3D computer graphics. Both the code and my paper can be found below.


  Code   Paper

Courses

Harvard's CS50: Introduction to Artificial Intelligence with Python

Taught by David J. Malan and Brian Yu

"This course explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like game-playing engines, handwriting recognition, and machine translation. Through hands-on projects, students gain exposure to the theory behind graph search algorithms, classification, optimization, reinforcement learning, and other topics in artificial intelligence and machine learning as they incorporate them into their own Python programs. By course’s end, students emerge with experience in libraries for machine learning as well as knowledge of artificial intelligence principles that enable them to design intelligent systems of their own." - CS50AI

Harvard's CS50: Introduction to Computer Science

Taught by David J. Malan

"CS50 is an introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming. Languages include C, Python, and SQL plus HTML, CSS, and JavaScript. Problem sets inspired by the arts, humanities, social sciences, and sciences. Course culminates in a final project. Designed for concentrators and non-concentrators alike, with or without prior programming experience. Two thirds of CS50 students have never taken CS before. Among the overarching goals of this course are to inspire students to explore unfamiliar waters, without fear of failure, create an intensive, shared experience, accessible to all students, and build community among students." - CS50

Mihir Rao © 2023