UMBC CMSC 471 02 Spring 2020
Introduction to Artificial Intelligence

About CMSC 471

This course serves 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, planning, machine 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 an upper-level undergraduate 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 expected to do them in Python.

Text Book

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.

Q&A and Discussion

We will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. Find our class page by following the Discussion link on the navigation bar. If you have registered for the class you should have received an email message inviting you to register on on the Pizza 471 site. if you did not or you register late, please send email and we send you an invitation.


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


Grades will be based performance on quizes, assigned homework, a mid-term examination and a final examination. The exact weight will be set at the end of the course, but athe expected breakdown is: quizes: 10%; homework: 45%; midterm: 20%; 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.


We may have periodic quizes on Balckboard based on the reading. Answering the quiz questions should be easy if you have done the reading.


There will a number of short homework assignments -- at least six and perhaps as many as eight. 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. Homework will be submitted via github classroom repositories. As each assignment is released, we'll provide a link you can use to accept and download your personal repository for the assignment.


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.


We have a repository of Jupyter notebooks intended to run in Colab and python code (e.g., the aima code) that are examples we'll use in class and that you can use to understand concepts. You should clone this on your computer or in your account on The 471 resources page has some information on using git and jupyter notebooks

Academic Honesty

We will follow a policy described in this statement adopted by UMBC's Undergraduate Council and Provost's Office.

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, all assignments are to be your own work. You may discuss the assignments with anyone. However, any help you receive must be documented. At the beginning of each assignment, 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. Failure to include such a statement will result in the assignment being returned ungraded. You may resubmit such a returned assignment once over the course of the semester.

Written answers on essay questions for homeworks and papers must be your own work. If you wish to quote a source, you must do so explicitly, using quotation marks and proper citation at the point of the quote. Plagiarism (copying) of any source, including another student's work, is not acceptable and will result in at a minimum a zero grade for the entire assignment. Please review this overview of how to correctly cite a source and these guidelines on acceptable paraphrasing.


Many of the assignments will involve programming and/or using software packages and we will assume that everyone has a basic familiarity with Python.