“I have gained many practical skills in terms of applying my knowledge to real-world problems, but I have also gained a better sense of the larger implications of comp sci and AI in the future.” — From a program course evaluation
This course is intended for students with a strong programming background, including comfort in applying object-oriented programming and recursion to solve problems. We start off with a brief overview of the history of artificial intelligence and progress to focus on a powerful classical technique known as Search. Optimization and probabilistic strategies are explored so as to demonstrate tradeoffs between different types of search strategies (blind search, local search, and adversarial search). Several well-known problems—such as N-Queens, Knapsack, Post correspondence, and Chess—are discussed, and we look at how the Deep Blue system was able to win a chess game against a reigning world champion.
Participants are expected to complete challenging and thought-provoking assignments using the techniques taught in class as well as their prerequisite knowledge. The end goal of the course is for each student to build a program in Java that can be used to search for a solution to one of the classical problems presented in class.
Student computers can be either PC or a Mac but should have at least 10GB of free space.
Emad Dehkordy is a graduate student in computer science at Columbia University, where he is pursuing a track in machine learning. He earned his undergraduate degree in electrical engineering from Sharif University of Technology in Iran. Emad has experience in building machine learning models using Python and has conducted data-driven research on video quality of experience. He had been a teaching assistant for courses in distributed systems, circuit design, and engineering principles.
Specific course detail such as hours and instructors are subject to change at the discretion of the University. Not all instructors listed for a course teach all sections of that course.