Artificial Intelligence
CMSC 421
Spring 2012
Schedule: Tue/Thr 3:30-4:45pm
Location: CSIC 2107
Instructor: Hal Daume III: me AT hal3 DOT name
Office Hours: AVW 3227, Thr 2p-3:15p; or by appointment
TA: Angjoo Kanazawa (office hours: Tue 5p-6p, CSIC 3107)

Jump to: [FAQ] [Syllabus] [Walkthroughs] [Homework] [Projects] [Handin] [Competition] [Leaderboard] [Policies]

 Background and Description

This course will introduce the basic ideas and techniques underlying the design of intelligent computer systems. A specific emphasis will be on the statistical and decision-theoretic modeling paradigm, with applications ranging from diagnosis to game-playing to language processing. This course is built around several multi-part programming projects, based on the games of Pacman and Battleship. Coursework will consist of two kinds of assignments. Programming projects will be in Python (FAQ). Programming projects may be done in teams of two or three and will be graded on a point basis. Written homeworks will be in the form of mini-assignments given most weeks. These mini-assignments will be very short (one or two exam-style questions) and will be graded in on a good / mediocre / incomplete basis. You should be prepared to do regular work each week to keep up with the material and the assignments.

Prerequisites: Prior programming experience is expected; although we don't expect that you know Python, we do expect you to be able to pick it up rapidly; facility with basic concepts of propositional logic and probability are expected. NOTE: This course has substantial elements of both programming and mathematics, because these elements are central to modern AI. You should be prepared to review basic probability on your own if it is not fresh in your head.

Expectations: I expect you to work hard, but will help you as much as possible to understand the material. However, I do expect you to read the book. I've tried to keep the readings as short as is reasonable. I expect you to do this ahead of time and come to class prepared: homeworks due on before class on day X will include topics we will discuss in class on day X. We will talk about solution in class if people have questions.


Overall grades will be determined from: Homeworks are due before class (by 3:25p on the day listed) and programming projects are due by 10p. Each homework is worth 1.5% of your grade, and your two lowest HWs are dropped (though you may not drop HW00: it's required, but sort of a freebie). Each programming project is worth 7% of your grade. Everything must be handed in electronically, with writeups as PDFs (if you don't know how to make a PDF, figure it out soon). You may handwrite and scan your assignments, so long as your handwriting is sufficiently clear.

Lateness and handin: Homework assignments may not be turned in late. You may turn one programming project in up to two days late with no penalty. Other projects may be turned up up to two days late, but once they're one minute late, you lose 50% of your points (i.e., if you would have gotten 90%, you will instead get 45%). Please use our online handin. Homeworks are NOT accepted by email. You can view your current grade on the CS grades system, but note that these are not exactly correct because they do not reflect the fancy grade tweaks that we will do to compute your final grade. We will provide a script that will let you do this computation yourself.

Grading and solutions: We will post solutions to homeworks and projects quickly after the due dates. We will also email you your scores once grading has been completed. If you handed something in and do not get a score for an assignment, you have a one week moritorium on complaints.

Participation grade: You can contribute to your participation score in two ways. One is by actively participating in class discussions and asking questions in class. I realize some people do not like asking questions or participating, and while I can empathize with this, it is a skill you should learn. You may also get participation points by using the piazza Q/A system actively, either asking questions or providing answers. If I mark your question/answer as a "Good question/answer", that's worth participation credit. Finally, if you can questions that you'd like answered during class, but don't want to post them or ask them yourself, just write the question down on a scrap of paper and hand it to me before class. If you put your name on it, and it's something I would have marked as a "good question", then that's worth participation points, too.

Overall grade: Your overall grade is computed as (sum of homework scores - minimum homework score) * 1.5 + (sum of project scores) * 7 + (midterm score) * 18 + (final score) * 25 + (participation score) * 4. This is then mapped to a letter grade as follows: >=90 (A), >=80 (B), >=70 (C), >=60 (D). For your category, if the ones digit is <3, you get a -, and if it's 7 or above you get a +. For instance, a 92 would be an A- and an 86 would be a B. After that, I'll figure in any extra credit and perhaps push some people up over boundaries if it's really close.


The official textbook for this course is:

Artificial Intelligence: A Modern Approach (Third Edition)
by Stuart Russell and Peter Norvig. Prentice Hall, 2009.

Be sure you have the Third Edition. It is BLUE, (not GREEN or BURGUNDY): the other editions are not sufficient (sorry!).

We will also occasionally have readings from:

Reinforcement Learning: An Introduction
by Richard S. Sutton and Andrew G. Barto. MIT Press, 1998.

This book is available online.

 Syllabus (tentative)

The following syllabus is subject to change, but likely not by very much. The readings listed are readings that you should have finished by that date. RN refers to Russell and Norvig; SB refers to Sutton and Barto. "opt" indicates an optional (but recommended) reading.

Date Topics Readings Due Notes
26 Jan Introduction to AI opt: RN 1.1,2 -
31 Jan Agents
Depth and breadth first search
opt: RN 3.2
2 Feb Agents II
A* Search and Heuristics
3.5-3.6 HW01
7 Feb Constraint Satisfaction
Search and iterative algorithms
RN 6-6.3
opt: RN 4.1
9 Feb Constraint Satisfaction II
Tree-structured CSPs and more search
RN 6.4-6.5
opt: Tree_decomposition
HW02 -
14 Feb Game Playing
Minimax search
RN 5-5.3
opt: RN 5.5-5.6
16 Feb Utility
Consistency and risk
opt: RN 16.4
Reinforcement Learning
21 Feb Markov Decision Processes
Value iteration
SB 3-4 P1
23 Feb Markov Decision Processes II
Policy iteration and TD-learning
RN 17.1-3, SB 6.1,6.2 HW03.5
28 Feb Reinforcement Learning
Exporation/exploitation, Q-learning
SB 6.5 -
1 Mar Catch-up SB 8.1,8.2 HW04 -
6 Mar Reinforcement Learning II
Policy methods and IRL
- P2 -
8 Mar IRL II - HW05
13 Mar POMDPs
Agents under uncertainty
Dummies, Sec 3-6 -
15 Mar Midterm review
(past: 2009, 2010)
- HW06 -
Reasoning Under Uncertainty
27 Mar Probability
Everything you need to know!
RN 13-13.5
opt: RN 13.6
29 Mar MIDTERM (Midterm and solution) - - -
3 Apr Bayes' Nets
Graphical models and conditional independence
RN 14-14.3
opt: RN 14.4
5 Apr Bayes' Nets II
- HW07, P3 (early)
10 Apr Bayes' Nets III
Inference by enumeration, variable elimination
RN 14.4 P3
12 Apr Bayes' Nets IV
Markov Chain Sampling
RN 14.5 HW08
17 Apr Decision Diagrams
Value of information, Markov chains
RN 16.5-16.6 -
19 Apr HMMs
Monitoring and robot localization
RN 15-15.3 HW09
24 Apr HMMs II
Particle filtering and resampling
RN 15.5 - -
26 Apr Language stuff I
Speech and machine translation
RN 23.4-23.5 HW10
1 May Language stuff II
Topic modeling
- - -
3 May Computer vision - HW11 -
8 May Machine learning
RN 24.3-24.4
opt: RN 24-24.2
10 May Last Day Party
Philosophy of AI and exam discussion
- HW12 -
18 May FINAL EXAM, 10:30 am - 12:30 pm (solution)
(past: 2009, 2010 and solution)
- - -
21 May End of exam period - P4 -


The following are walkthroughs created by the Spring 2009 class. Please let me know if you find any bugs!

 Homework Assignments

See the syllabus above for due dates. You're free to use the LaTeX source in any way you want, but you'll need haldefs.sty and notes.sty to build them.

If you want more practice, see the recommended book exercises.

 Programming Projects

Programming projects more substantial and to be completed in Python. The projects are:

 Pacman Competition

The semester will culminate with a capture-the-flag style Pacman competition. In this competition, each team will control two Pacman characters that will attempt to recover a flag in the other team's territory without getting eaten! Special prizes for the winner!

The competition will be centered around the Pacman code that we develop in the programming projects. See here.

 Course Policies

Cheating: Any assignment or exam that is handed in must be your own work. However, talking with one another to understand the material better is strongly encouraged. Recognizing the distinction between cheating and cooperation is very important. If you copy someone else's solution, you are cheating. If you let someone else copy your solution, you are cheating. If someone dictates a solution to you, you are cheating. Everything you hand in must be in your own words, and based on your own understanding of the solution. If someone helps you understand the problem during a high-level discussion, you are not cheating. We strongly encourage students to help one another understand the material presented in class, in the book, and general issues relevant to the assignments. When taking an exam, you must work independently. Any collaboration during an exam will be considered cheating. Any student who is caught cheating will be given an E in the course and referred to the University Student Behavior Committee. Please don't take that chance - if you're having trouble understanding the material, please let us know and we will be more than happy to help.

ADA: Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide, to the instructor in office hours, a letter of accommodation from the Office of Disability Support Services (DSS) within the first two weeks of the semester. You may reach them at 301-314-7682 or by visiting Susquehanna Hall on the 4th Floor.