UMBC CMSC 671 Fall 2009
Principles of Artificial Intelligence

About CMSC 671

This course will serve as an introduction to Artificial Intelligence concepts and techniques. We will cover most of the material in our text, Artificial Intelligence: A Modern Approach by Stuart Russell and Peter Norvig, including the agent paradigm in AI systems, search, game playing, knowledge representation and reasoning, natural language processing, expert systems, planning, learning and philosophical issues. See the schedule for a more detailed breakdown but be aware that the order and timing is subject to change.

This is a graduate Computer Science course and we will assume that you will have a good grounding in algorithms and adequate programming skills. Many of the homework assignments will involve programming and you will be strongly encoraged to do them in either Java or Python.


Tim Finin
ITE 329
Office Hours: by arrangement

Teaching Assistant

Xianshu Zhu

When and Where

Mon-Wed 5:30-6:45 Academic IV room 006

Text Books

We will be using the following Artificial Intelligence: A Modern Approach, by Stuart Russell and Peter Norvig, second edition. This edition has been out for many years, so you should be able to find used copies available to borrow or buy. You can also buy it online here.


A tentative schedule is available, but we will adapt this as we go along. Check this every week.


Grades will be based performance on the assigned homwork, a mid-term examinination and a final examination. The exact weight will be set at the end of the course, but a typical breakdown is that homework assignments will count toward 60%, the exams 15%, and the final 25%. As per University policy, incompletes will be granted only under extraordinary circumstances; students who are enrolled after the last day to drop a class should be prepared to receive a grade of A-F.

Homework and Exams

There will a number of short homework assignments -- at least seven and perhaps as many as ten. Each assignment will have a due date and it is expected to be turned in on time. A penalty for late homework will be applied. The material covered by the exams will be drawn from assigned readings in the text, from lectures, and from the homework. Material from the readings that is not covered in class is fair game, so you are advised to keep up with the readings.

Academic Honesty

Cheating in any form will not be tolerated. In particular, examinations are to be your own work. You may discuss the programming assignments with anyone. However, any help you receive must be documented. At the beginning of your program, you must include a comment indicating the sources you used while working on it (excluding course staff and text), and the type of help you received from them. If you received no help, say so. Failure to include this comment at the top of your program will result in your program being returned ungraded.

The implementation of the programming assignments must be your own work. If you are stumped on a particular error, you may consult with someone else; however, if you consult with someone other than the instructor, the TA, or the consulting desk, you must place a comment in your code near the point of the error, stating the source and scope of the help you received. Reasonable help will not affect your grade; failure to cite your sources is academically dishonest, and will be dealt with harshly.


Many of the assignments will involve programming and/or using software packages. For programming, it's likley that you will be able to use either Java or Python.