We have covered a lot of material in CS221. In this handout I do my best to compile the list of skills you are expected to have and topics you are expected to know. The skills and topics fall into three main categories: Using search to solve AI problems, Modeling an AI decision as inference over a network of variables, Solving AI problems by teaching machines to learn from data.

There are many ways to visualize what you have learned. I chose two different visualizations (1) a list of all the abilities you should have and (2) a hierarchical decomposition of the topics we have covered. I hope these are helpful. Any feedback on how to understand what you have learned would be welcome.

Of course, if I could ask for you to take away only one thing from CS221, it would be an interest to go further. your current drive and enthusiasm is the best predictor of your future ability.


I find it useful to think of a class in terms of the things I should be able to do after finishing. In general what I expect you to know (really grok) are the abilities we covered in the assignments, problem sets and midterm.

This is how the diagram works: see that large column in the middle? Those are the 20 most important abilities we hope you have a grasp of after CS221. The nodes to the left are (a subset of) the course topics. The nodes to the right are the homework, programming and midterm problems.

Concept Hierarchy

Another way to understand what we covered in CS221 is through the more traditional concept hierarchy. During class I tried to augment your education with periferal topics and gems of information (remember the proof that k-means was just expectation maximization on a naive bayes classifier?). This list is not complete.

Other Visualizations

I am looking for feedback on these visualizations. Any suggestions or reactions would be welcome (piech at cs.stanford.edu).