I recently completed the Artificial Intelligence course (CS 6601) as part of OMSCS Fall 2017. The course gives an good overview of the different key areas within AI. Having taken Knowledge Based AI (CS 7637), AI for Robotics (CS 8803-001), Machine Learning (CS 7641) and Reinforcement Learning (CS 8803-003) before, I must say that the AI course syllabus had significant overlap in many areas with these courses (which is expected). However, I felt the course was still worthwhile since Prof. Thad taught these topics in his own perspective, which made me look at these topics in a different light. Prof. Thad also tried his best to make the course content interesting and humorous, which I really appreciated.

**Course Outline**

**Game Playing**– Iterative Deepening, MinMax trees, Alpha Beta Pruning etc.**Search**– Uniform Cost Search, Bidirectional UCS, A*, Bidirectional A* etc.**Simulated Annealing**– Hill Climbing, Random restarts, Simulated Annealing, Genetic Algorithms etc.**Constraint Satisfaction**– Node, Arc and Path consistency, Backtracking, forward checking etc.**Probability**– Bayes Rule, Bayes Nets basics, Dependence etc.**Bayes Nets**– Conditional Independence, Cofounding cause, Explaining Away, D Separation, Gibbs Sampling, Monty Hall Problem etc.**Machine Learning**– kNN, Expectation Maximization, Decision Trees, Random forests, Boosting, Neural nets etc.**Pattern Recognition through Time**– Dynamic Time Warping, Sakoe Chiba bounds, Hidden Markov Models, Viterbi Trellis etc.**Logic and Planning**– Propositional Logic, Classic planning, Situation Calculus etc.**Planning under Uncertainty**– Markov Decision Processes (MDPs), Value iteration, Policy iteration, POMDPs etc.

The course used the classic textbook in AI – **Artificial Intelligence – A Modern Approach** (3rd Edition) by Peter Norvig and Stuart Russell. Some chapters (such as Logic and Planning) was taught by Peter Norvig himself whereas few others were taught by Sebastian Thrun. There is no arguing that the course was taught by the industry best.

There were 6 assignments (almost one every alternate week) which required proper understanding of the course material and decent amount of coding (in Python). There was an open book midterm and final exam as well. Even though these were open book, these involved significant amount of work (researching and rereading the text, on paper calculations etc.). Overall, completing these forces one to really understand the concepts, which I really liked.

## Summary Stats

- Average time spend per week – approx.
**20 hours**(including whole weekends on assignment due weeks) - Difficulty (out of 5) –
**4.25**(which is what I would rate ML too, and these two would top my list) - Rating –
**4/5**