image of bot

UMBC CMSC 671 Fall 2020
Principles of Artificial Intelligence

About CMSC 671

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 (4th edition) 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 graduate level Computer Science course and we will assume that you will have a good grounding in algorithms, statistics, logic and adequate programming skills. Many of the homework assignments will involve programming and you will be expected to do them in Python.

UMBC Policies and Resources during COVID-19

Please see this Google doc for UMBC Policies and Resources during COVID-19.

Text Book

This course is part of UMBC's Course Materials Initiative (CMI), so an electronic copy of the text can be downloaded from this course on the UMBC Blackboard site. Note that this electonic copy can also be accessed online via Blackboard for up to three years if you are registered for the class. If you download the electronic copy, you can view it via the Bookshelf app on your computer, tablet or mobile phone and I'm told that you can use it indefintely. Unfortunately, the app is not available on Unix.

Q&A and Discussion

We will be using Piazza and Discord for enail, questions, and class discussion. How we take advantage of these two different systems is still to be determined

  • Piazza 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 671 site. if you did not or you register late, please send finin@umbc.edu email and we send you an invitation.
  • Discord is perhaps better for longer discussions among a group. You can access it via a Web browser or in an anpp you can download to your computer or phone. It can support voice and video and real time interactions, so it could be a good mechanism for a focused demonstration to answer questions.We'll send out invtations to join the

Schedule

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

Grading

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.

Quizes

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

Homework

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.

Exams

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.

Code

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 gl.umbc.edu. The 671 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.

Software

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