CMSC 471: Introduction to Artificial Intelligence
Fall 2013

Last revised 1/14/14

Class Time and Location

Tuesday and Thursday, 2:30 p.m. to 3:45 p.m., ITE 229.

Course website:

Course Staff


Max Morawski
ITE 215
Office Hours: Tuesdays 1:00-2:30pm, Thursdays 1:00-2:30pm

Teaching Assistant

Hang Gao
ITE 353
Friday, 2:00-4:00pm.


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, 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. 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 within 24 hours (or on Monday for email sent over the weekend).


Course grades will be based on the following work.
Homework (six biweekly assignments) 40%
Course project 25%
Midterm exam 10%
Final exam 20%
Class participation 5% (In class and piazza)


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. Each student will have one free late--a one-week automatic extension that can be used for any single homework over the course of the semester. Please let me know you are using this extension on the day that the assignment is due, and write "EXTENSION" on the assignment when you submit it. Requests for additional extensions will be denied other than in the most extraordinary circumstances. The one-week extension is a hard deadline. Barring the most extreme of circumstances no assignments will ever be accepted more than one week late so that we can go over them in class.

Homeworks will be due at the beginning of class on the due date. (That is, an assignment due on a Thursday will be due at 2:30pm 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 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 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 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 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. It is entirely acceptable to discuss the homework assignments with other students, but the actual answers should be {\em your own} answers, not group answers that are copied down. 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.


Many thanks to Dr. Marie desJardins for her course materials, mentoring, and advisement. Basically all of the course materials we'll use have been strongly adapted from her materials. Putting this class together so rapidly would not have been possible without her assistance. Additional thanks to Don Miner, who taught this class to me when I was an undergraduate and whose teaching methods I will try to emulate.

Dr. desJardins (or her slides) would like to thank 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.