CS 6601: Artificial Intelligence

CS 6601 is a survey of the field of Artificial Intelligence and will often be taken as the first graduate course in the area. It is designed to be challenging and involves significant independent work, readings, and assignments. The course covers most of the required textbook Artificial Intelligence A Modern Approach 3rd edition, which is a keystone of Georgia Tech’s Intelligent Systems PhD qualifier exam.

More information at the class website.


I took this course in Spring 2022. It is not a course in which you will have the opportunity to devise your own projects; rather, you will complete a series of prescribed independent assignments:

Assignment 0: Ensures you have your local Python environment set up and introduces you to Jupyter Notebooks, which was used for the majority of the assignments. We used Miniconda to manage our development environment for this class. While the assignment instructions have you use the browser-based Jupyter Notebook editor, I found using VSCode more suited to my preferences.

Assignment 1: This project was all about Search algorithms. The warmup exercises started with implementing basic search algorithms you would likely encounter in an undergrad algorithms course — Breadth-first search (BFS), Uniform-cost search, and A* search. We also implemented a Priority Queue.

The real meat of this assignment is in implementing various bidirectional and tridirectional search algorithms. I made the mistake of reading all the assigned material before starting the assignment. Start the assignments as early as possible and tackle the readings as resources that you can search through to help with the implementation. Otherwise, you will likely run out of time (like I did) to meet all of the requirements of the assignment. Once I adopted this approach, I was able to complete every assignment before the deadline.

Assignment 2: This assignment was a fun one because it was all about programming game-playing agents! Adverserial search is an important concept to understand for this one.

Assignment 3: This was my personal favorite because it had to do with probability and Bayes Networks, which I had previous experience with from my previous grad degree in computational linguistics. You’ll need to understand concepts like Posterior Probability distributions, Metropolis-Hastings sampling, and Gibbs sampling.

Assignment 4: This assignment covered supervised machine learning concepts like Decision Trees and Multiclass classification.

Assignment 5: This assignment shifted to unsupervised machine learning methods like k-means clustering and the Gaussian Mixture Model.

Assignment 6: The final assignment covered Hidden Markov Models (HMMs) and the Viterbi algorithm, which were also familiar to me from my computational linguistics background.

The best thing you can do for yourself in this class is to establish a study group where you can have white-board level discussions about the assignments to hash out the details. You’ll also want to lean on this community to share resources that help clarify the concepts behind each assignment, since the lectures aren’t always helpful.