CMSC 671
Last revised 9/2/03

Who, what and where

This course will serve as an introduction to artificial intelligence concepts and techniques. We will use the Lisp programming language as a computational vehicle for exploring the techniques and their application. Specific topics we will cover include the history and philosophy of AI, Lisp, the agent paradigm in AI systems, search, game playing, knowledge representation and reasoning, logical reasoning, uncertain reasoning and Bayes nets, planning, and machine learning. If time permits, we may also briefly touch on multi-agent systems, robotics, perception, and/or natural language processing.


CMSC 341 and strong programming skills. CMSC 441 or exposure to the theory of complexity of algorithms will also be useful.

When and Where

Monday and Wednesday from 2:00 to 3:15 in ITE 233.


Teaching Assistant

Yan Hao, Office hours: Monday 3:20-4:20, ITE 340.


This syllabus and course schedule are subject to change. We will follow the Russell and Norvig textbook fairly closely, with some additional background material on Lisp and other topics of interest.

Text Books

We will be using the following:


As you will learn, I am a strong believer in two-way communication. I expect all students to participate in classroom discussions, both by asking questions and by expressing opinions.

In return, I will make myself available to answer questions, listen to concerns, and talk to any student about topics related to the class (or not). I welcome your feedback throughout the semester about how the course is going.

In addition to regular office hours, I maintain an open-door policy: you should feel to stop by to ask questions, or just say hello, whenever my door is open (which it generally will be unless I am out of the office, in a meeting, or deep in thought). (I'm not that great at remembering names, so please don't be offended if I ask you several times to re-introduce yourself!) I will also make a concerted effort to answer e-mail within 24 hours.


Course grades will be based on the following work. The final weighting may be changed slightly.
Homework (six biweekly assignments) 40%
Course project 25%
Midterm exam 10%
Final exam 20%
Class participation 5%

Please refer to the class grading policy.


There will be six homework assignments. The homework assignments will have a mix of written and programming components. Each assignment will have a due date and is expected to be turned in on time. Extensions of up to one week may be granted on an individual basis by the instructor or TA, if requested in advance. Repeated requests for extensions, or requests for extensions at the last minute, will be denied other than in extraordinary circumstances.

Homeworks will be at midnight on the due date.  (That is, an assignment due on a Tuesday will be due at midnight on Tuesday night.) A penalty for late homework will be applied as follows:


There will be one in-class examination and a final examination. 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.

Written answers on essay questions for homeworks and exams must be your own work. If you wish to quote a source, you must do so explicitly. Plagiarism of any source, including another student's work, is not acceptable and will result in a zero grade for that assignment.


We will be using CLISP, a public-domain implementation of Common Lisp that is installed on the department's Unix machines (/usr/local/bin/clisp). You can also download a version that will run on a PC (but not a Mac), under Linux or Windows. More information will be made available at a later date.

671 mailing list

You should subscribe to the class mailing list by sending a message to with the line: Class announcements, hints, and discussion of assignments will be posted on this list. You can also send messages to the list to ask questions of your fellow students and/or TA and professor.

General questions (i.e., anything that another student may also be wondering about) should be sent to the list, so that everyone will be able to benefit from the answers. Students are welcome to post answers to questions, even if the questions were directed at the course staff. Individual concerns, requests for extensions, questions about individual grades, and the like should be sent to Prof. desJardins and/or the TA as appropriate (preferably to both of us).


Thanks to Tim Finin (UMBC), Berthe Choueiry (University of Nebraska - Lincoln), and Daphne Koller (Stanford University) for making their course materials publicly available on the web. Some of the course materials (slides and homeworks) have been adapted from those sources.