CSCI 373 Artificial Intelligence
|
Course Description
Computer Science 373 is an introduction to Artificial Intelligence (AI). Artificial Intelligence is a concept that has been pondered by many, from computer scientists to philosophers to novelists and screenwriters. While many popular notions of AI can trace their roots back to the vision of the field's pioneers, the popular view of AI doesn't begin to touch the surface of this rich discipline.
Many familiar concepts in computer science have emerged (either directly or indirectly) from research in AI. Compilers, timesharing, and the object-oriented programming paradigm can all trace roots back to the early days of AI. More recently, the field of AI has expanded considerably to include topics that don't necessarily mimic human thought and behavior, but instead go beyond it. Robots now explore areas that humans can't reach; cars drive themselves without needing coffee to keep them awake; and data-mining algorithms find patterns in terabytes of data that no human could possibly analyze.
There are far too many topics within AI to consider all of them in twelve weeks. Indeed, each topic is rich enough to be a course on its own. We will devote most of the semester to the study of core AI topics: problem solving and search, probabilistic reasoning, and learning. In the remainder of the course we will touch on a selection of related topics, primarily focusing on current research in the field (e.g., deep learning, new results in complex games). We will also spend some time discussing questions around intelligence (what is it? how can we measure it?), as well as the ethics of building and deploying intelligent agents.
During the final quarter of the semester, you will have the opportunity to explore in depth a topic of your choice. The exploration will take the form of an extended project - from investigation of relevant literature to the development of a large software system, which you will present to your classmates.
In order to help prepare you for the project, I will have you complete five programming assignments. There will be no final exam. Instead, there will be a take-home exam in March.
Lectures
Note that this schedule is subject to change, so please consult the online version regularly. For instance, we might want to extend the time spent on certain topics if the class finds them to be especially interesting.
While I anticipate some changes, I have made every attempt to design the schedule in such a way that important milestones (assignments, project, exam) can remain as originally scheduled. If we finish a topic early, I might post the corresponding assignment earlier. Due dates will not change, however, unless the entire class agrees. This should help you in planning your calendars for the semester.
Date | Topic | Reading | |
2/3 | Introduction | Ch. 1 | |
Week of 2/6 | Agents and Search | Ch. 2 and 3 | |
2/13, 15 | Games | Ch. 5.1-5 | |
2/17 | Winter Carnival. Andrea in Minneapolis to give a talk. | ||
2/20 | Games: Expectimax | ||
2/22 | Utility Theory and MDPs | Ch. 16.1-3, Ch. 17.1, Sutton and Barto Ch. 3 | |
2/24 | Value and Policy Iteration | Sutton and Barto Ch. 4 | |
Week of 2/27 | TD and Q-Learning | Sutton and Barto Ch. 5.1-3, Ch. 6.1, 2, 5 | |
3/6 | Discussion | TBA | |
3/8-10 | Self-scheduled 2-hour midterm exam. Andrea at SIGCSE. | ||
3/13 | Probability | Ch. 13.1-5 | |
3/15, 17 | Markov Models, HMMs | Ch. 15.1, 2, 5, 6 | |
Spring Break | |||
4/3 | Filtering | Ch. 15.1, 2, 5, 6 | |
4/5 | Andrea in DC for CRA-W Board Meeting. | ||
4/7 | Learning from Examples: Neural Nets | Ch. 18.1-4, 7 | |
4/10, 12 | Decision Trees | ||
4/14 | Deep Learning | TBA | |
4/17 | Discussion: RL and Deep Learning | ||
4/19, 21 | Motion Planning | Ch. 25 | |
4/24 | Self-Driving Cars: 30 years of progress | TBA | |
4/26 | Discussion: Ethics | ||
4/28, 5/1 | Constraints | Ch. 6 | |
5/3 | Discussion | AAAI "Classic Paper" Award Winner | |
5/5 | Discussion: Turing Test for Today's AI | ||
5/8 | Wrap Up | ||
5/10-12 | Project Presentations and Demos |
Readings
Python Resources
Java Resources (for those doing final projects in Java)
Programming Assignments
The assigned programming exercises for this class will be done in Python (2.7). The Linux machines in TCL 312 are available for your use. (Because CS 134, 136, and 237 are so heavily enrolled this semester, I ask that you work on the Linux machines, rather than on the Macs.)
You may certainly work on your own personal computers, but please keep in mind that I'll be testing all of the programs on a machine that is set up like those in the lab. Therefore, be certain your programs run properly there before you turn them in.
I'll be grading your programs on correctness as well as on programming style. For at least two assignments, I'll ask that you meet with me for a code review/interactive grading session.
Computer science is a collaborative discipline, and knowing how to work effectively in a team is an essential skill. So I will require you to work with a partner on at least three regular assignments (i.e., not including the Python tutorial and final project). I suggest that you try working with a few different people over the course of the semester, so that you get to know others in the course, as well as their work styles.
A final but extremely important note on the programming assignments: The Pacman assignments have been developed by John DeNero and Dan Klein at UC Berkeley. In exchange for permission to use these assignments, I have promised that no one (not you, not I) will post the solutions to any part of them. These assignments are used by many instructors, so I'm sure you understand the authors' concern. Please do not share your solutions with anyone. Thanks for understanding.
Assignment | Date Assigned | Due Date* | Code Review |
Python Tutorial (Optional) | 2/3 | 2/9 | None |
| 2/10 | 2/21 | 2/22-23 |
| 2/20 | 3/2 | 3/6 |
| 3/3 | 3/14 | 3/15 |
|
4/3 | 4/11 | 4/12-13 |
|
4/12 | 4/18 | None |
|
Project
Keep the project in the back of your mind as you go through the semester. During the week of 4/10, talk to me about your ideas. By 4/14, you'll need to get official approval of your proposed project. Note that this is before the written proposal is due.
You will present your project and demo it for the class on 5/10, 11, 12. (Depending on the number of groups/projects, we may need to schedule an hour in the afternoon or evening.) The actual code will be due to me on 5/12. You will also write a final paper on your project. In the final paper you will need to carefully describe your project, discuss background literature related to the project, give an overview of the design, and evaluate your progress.
Milestones for the project are as follows:
Talk ideas over with me | Week of 4/10 |
Final date for approval | 4/14 |
Brief but thorough/clear (1-2 page) proposal due | 4/19 |
Presentations and demos | 5/10,11,12 |
Code due | 5/12 |
Final paper due | 5/18 |
Exams
There will be one self-scheduled examination, which you may take on 3/8, 9, or 10.
Evaluation
5-10% | Short paper responses, written assignments, and class participation (including article discussions) |
45-50% | Programming assignments (10% each) |
10% | Exam |
25% | Final project code/demo/presentation |
10% | Final project write-up |
All regular assignments are due at 11 PM on the given due dates unless indicated otherwise. Regular programming assignments may be submitted late without penalty if using late days as explained above. In all other cases, assignments will be accepted late, but with a penalty of 10% per day.
Much of your programming work will be collaborative. For more information on the guidelines governing the extent of collaboration allowed, please see the Honor Code Guidelines for Computer Science 373.
Honor Code Guidelines
Explanation of the Honor Code as it pertains to this course: The Honor Code as it applies to non-programming assignments is outlined in the Student Handbook.
Projects must contain only: code written solely by your group, code written by yourself or other CS 373 students this semester for previous assignments, and code from the starter for the assignment or from the starters for previous assignments. For the final project you may use external libraries with prior approval from me by e-mail. Code from previous assignments must be clearly credited where it is used and in a separate written note to me. It may be used only with permission of the students involved.
You are welcome to discuss design, debugging, and mathematics related to projects with other students, but you may not review the code of other students for any current assignment. Note that using previously submitted code and discussing projects is a more liberal policy than the default CS department policy for programming projects. Coursework in this class reflects your maturity and is modeled on professional research and development: we tackle hard problems, and do so together. In all cases, we acknowledge the contribution of others.
Recall that in accordance with the CS department policies, looking at any other computer user's files without permission is unacceptable, regardless of whether those files are protected on the file system.