CMSC 471: Introduction to Artificial Intelligence
Spring 2014

Last revised 1/27/14

Class Time and Location

Tuesday and Thursday, 11:30 a.m. to 12:45 p.m., ENG 231 (ACTIVE Center) ITE 233.

Course website:
Course schedule

Course Staff


Dr. Marie desJardins
ITE 337
Office Hours: Tuesdays 10:00-11:00 a.m., Wednesdays 2:00-3:00 p.m.

Teaching Assistant

Lianjie Su
ITE 353
Office Hours: Mondays and Thursdays, 2:00-3:00 p.m.


This course schedule is 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.

Course Description

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 and functional programming, the agent paradigm in AI systems, search, game playing, knowledge representation and reasoning, logical reasoning, uncertain reasoning and Bayes nets, planning, machine learning, and multi-agent systems. If time permits, we may also briefly touch on robotics, perception, and/or natural language processing.


CMSC 341 and strong programming skills. Important material that you should have learned in CMSC 203 and/or CMSC 341 includes Boolean logic, basic probability theory and combinatorics, big-O complexity analysis, algorithm design, and data structures. If you did not learn much about these topics (or don't remember the material), you may have to brush up on them on your own. Additional probability theory/statistics, linear algebra, and complexity theory will also be useful, but are not required.


We will be using the following:


We will be using CLISP, a public-domain implementation of Common Lisp that is installed on the department and gl Unix machines, in /usr/local/bin/clisp. You can also download a version that will run on a PC (Linux or Windows) or a Mac.


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 a semi-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). If the door is partially ajar, feel free to interrupt if you have a pressing concern. If the door is closed, please do not knock unless it is a genuine emergency. (Also, 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 and Piazza posts within 24 hours (or no later than Monday for email/posts sent over the weekend). I am online a lot and make student emails my top priority during the semester, so you may well receive a response within just a few minutes -- however, this is not guaranteed!

471 Piazza Site

You should join the class Piazza discussion board by accepting the invitation that you should have received by email.

VERY IMPORTANT: Class announcements, hints, and discussion of assignments will be posted on the Piazza site. You are responsible for knowing the information that is posted there. You should be sure to set your email preferences so that the messages will come regularly to an account that you actually read. "I didn't see that email" is not a valid excuse for being unaware of information that was announced on Piazza.

You can also post questions on Piazza that can be answered by your fellow students and/or TA and professor. General questions (i.e., anything that another student may also be wondering about) should be posted here (rather than sent to the professor individually), so that everyone will be able to benefit from the answers. Responses posted by students to questions on Piazza must follow the academic integrity guidelines outlined above, so you should check with the instructor and/or TA before posting answers to questions about homework. (For example, posting a clarification to the meaning of a question is probably OK, but posting hints about the answer is not.)

Individual concerns, requests for extensions, questions about individual grades, and the like should be sent to the instructor and/or the TA as appropriate (preferably to both of us). You can send these by email or through Piazza (using "New Post", then selecting the "Post to Individual Student(s)/Instructors)" option).


Course grades will be based on the following work. The final weighting may be changed slightly.
Homework (six biweekly assignments that may be worked on individually or in small groups (up to 3 students)) 36%
Course project 25%
Midterm exam 14%
Final exam 20%
Class participation (regular attendance and active engagement) 5%

Please refer to the class grading policy.

Assigned Reading

On most days, some sections or chapters from the course textbooks will be assigned. Some of the assigned reading will be designated as "Pre-Reading" in the course schedule, and the reading guide will include a summary of the main concepts that you should be sure to understand before coming to class that day. The purpose of this system is to have you do some of the reading before class, so that I don't have to waste time lecturing on basic material and concepts. You are then expected to read the full reading assignment more carefully after class, to make sure you have a clear understanding of the subtler concepts, and to fill in material in the book that is not covered in detail in class. (That latter material is still fair game for the exam, whether or not the material is explicitly covered in lecture or the lecture slides.)

"Pre-Reading" should be done before class, and the reading guide explains what you should be getting out of the reading. I will not lecture on that basic material, although I may offer a brief review and am always willing to answer questions. We will sometimes have a "group Piazza quiz" to review and test your understanding of those concepts; those quizzes will not be graded (although your preparedness and engagement in the quizzes may factor into your class participation grade).

"Reading" is the material that will be on the exams. Generally speaking, this reading is a superset of the pre-reading, and I will give at least an overview lecture of the additional content in the reading. The reading guide contains some commentary on what will and won't be emphasized on the exam.


There will be six homework assignments, which will have a mix of written and programming components.

Students may work on homework assignments individually or in groups of up to three students. It is in your best interest to work on the homeworks as a group -- that is, physically together in one place, working on all of the problems as a group, making sure that every student fully understands the solutions. The exams will mostly have very similar types of questions to the homework problems, so if you split up the homework and each work on a problem independently, you are undermining the intention of the homeworks, which is for you to learn the concepts, apply them in practice, and prepare for the exams.

For written homeworks and homework sections, you may produce a single solution. You only need to submit one hardcopy of that group solution, with everyone's name on the first page.

For programming homeworks and homework sections, you must each individually implement the solutions. You may consult with the members of your homework group to get help and debug the code, but your solution should be your own (i.e., you may not just copy code from another student, or write code for another student). You may not show your code to, or get help from, anyone other than the students in your group, the instructor, the TA, and help center or LRC tutors. See below for submission requirements.

Each assignment will have a due date and is expected to be turned in on time. Late homeworks will be assessed a penalty as follows:

Homeworks will be due as hardcopy (typed or neatly handwritten) at the beginning of class on the due date. That is, an assignment due on a Thursday will be due at 11:30 a.m. on Thursday, and must be turned in in class.  If you will miss class, you must arrange for your homework to be turned in to the instructor or TA during or before class. There is a ten-minute grace period, but if you show up later than that, the late penalty will be assessed. If an emergency arises and you are absolutely unable to attend class, you may send me your homework via email as a "placeholder"; a hardcopy must still be submitted to me (under my office door or handed to me or the TA) within 24 hours to avoid the late penalty.

Programming assignments must be submitted both as hardcopy and via the submit system on the gl machines. Documentation on the submit facility is available at . The project name for the course is "cmsc471" (lower case).


There will be one in-class midterm 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

This course adheres to the Provost's statement on academic integrity:

"By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. To read the full Student Academic Conduct Policy, consult the UMBC Student Handbook, the Faculty Handbook, or the UMBC Policies section of the UMBC Directory."

Cheating in any form will not be tolerated. In particular, examinations are to be your own work. You may discuss the homework assignments with anyone. However, any help you receive (other than from your homework group members) must be documented. At the beginning of your assignment or program, you must explicitly indicate the sources you used while working on it (excluding course staff and text), and the type of help you received from them. If you do not include such a statement, the course staff will assume you worked entirely independently. Any indication of collaboration with other students in this case will be considered a violation of the academic honesty policy.

The implementation of the programming assignments must be your own work. If you are working in a group, the guidelines discussed above apply (the code must be your own but you can show your code to a group member and ask them to help you figure out what is wrong with it). 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 help center, 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 severely.

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 at the point of the quotation, with proper citation. Plagiarism of any source, including another student's work, is not acceptable.

Any violation of the academic honesty policy will result in a minimum penalty of a zero grade for that assignment. Additional penalties, depending on the severity of the offense, may include a reduced or failing grade for the class.


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