CSCI E-220: Artificial Intelligence

Course Information and Weekly Syllabus

Fall Semester 2009-2010
Thursdays, 5:30 to 7:30, Science Center B-10
Sections: 7:35 to 8:35, Science Center B-10
Instructor: David Albert
Teaching Assistant: David Schneider-Joseph

Website: http://www.fas.harvard.edu/~albert/cscie220

1. Overview

CSCI E-220 is a general introduction to Artificial Intelligence. We will study the design of computer systems that exhibit traits we normally associate with intelligence in human behavior, such as the ability to understand natural language, to reason about the visual environment, and to solve complex problems. We will also explore current events and the state of the art in this field.

This course is intended for students who have done a fair amount of programming in at least one high-level language and have written computer programs of at least moderate complexity.

The course will begin with an introduction to the LISP programming language. Although no prior experience with LISP is assumed, I will assume that students are thoroughly familiar with programming concepts (variable scope, data structures, pointers, etc.) normally learned in courses on Java or C/C++. The teaching assistant will run introductory sections during the first weeks to provide additional help with LISP beyond that provided in lecture.

We will begin our study of Artificial Intelligence with a look at knowledge representation formalisms and search techniques, the ultimate tools of most AI programs. Content areas include natural language processing, computer vision, logic and theorem proving, game playing programs, inheritance networks, neural networks, genetic algorithms, and expert systems. We will discuss the current state of the art with examples from recent mainstream publications. As time permits, we will also cover robotics and planning.

Each student is expected to write several computer programs ("lab assignments"), using a Common Lisp package called clisp, available on the Harvard Unix machines. At your own risk and with less support, you may use any other CommonLISP package you choose; the teaching staff will still be able to help you with questions pertaining to the LISP language, but not with any problems you might have that are associated with your particular version of CommonLISP or your personal computer. Some of the later assignments, and the final project, may be written using Java or C/C++ if you prefer.

The lab assignments have taken people widely varying amounts of time in past years, depending on their programming skills. I have heard estimates from former students ranging from 5 to 15 hours or more, per week. Please plan accordingly.

2. Course Staff

Instructor: David Albert (albert@fas.harvard.edu). The best way to reach me is by email. I am also available before and after class, and by appointment.

Teaching Assistant: David Schneider-Joseph (david@davidsj.com). The TA will run a weekly one-hour section meeting, grade homework, and provide assistance to students with the course material. The TA will also hold a weekly lab hour in one of the campus computer labs to help with programming questions.

We will give out phone numbers and calling times in class, but for any coding issues email is usually the best way to reach us, so we can see the code fragments in question.

3. General Information

Attendance is expected at both lecture and section. The material covered in the sections will relate directly to the homework assignments and will cover LISP programming in more detail than we have time for during lecture. If you miss a lecture or section, be sure to get copies of handouts, and find out from your TA or from someone else in the class what was covered. Important course announcements may be sent via e-mail; please make sure you've provided me with an address I can use!

I hand out lecture notes at the beginning of most lectures; these are rough outlines of the topics covered and are copies of my pre-lecture slides. However, during the lecture I will be marking up many of the slides; you may wish to take your own additional notes directly on the handouts.

4. Readings

Two textbooks for this course are available at the Harvard COOP bookstore:

The Russell & Norvig text will provide the technical reading for the course; reading will be assigned each week, and lectures will assume that everyone is up to date with the reading. Reading from Graham will be assigned in the first few weeks, and most students will find it a useful reference guide throughout the semester. The Graham book is required unless you are already a strong LISP programmer.

"Adventures in Modeling" will be used in the latter part of the course. It has recently been reprinted and should be available at the Harvard COOP Bookstore.

5. Assignments

There will be a total of seven programming assignments plus a final project. You will use Common LISP for several of them. For some others, including the final project, you may use a language of your choice. The assignment write-ups will suggest LISP programming approaches.

Assignments should be turned in both electronically (via drop-boxes or e-mail attachments) and on paper, by the due date. We need BOTH so that we may run your electronic versions, and read (and write comments on) the code on the paper version. In general we won't begin grading your assignment unless we have both copies; if for some reason you cannot hand in both an electronic and a paper copy, please communicate directly with the TA so we know what's going on.

ALL ASSIGNMENTS MUST BE YOUR OWN WORK! It is NEVER acceptable to share code (even code fragments) with someone else without attribution. If you copy code fragments from any source (e.g. a textbook or website) or if you get help from another student, you MUST give full credit in every instance, with a code comment inside your source document clearly indicating which code fragments were copied, shared, or derived together with someone else. If you have ANY questions about the degree to which it is appropriate to give or receive assistance with the work, please ask the instructor.

Please finish assignments on time! Assignments turned in on time will generally be returned the following week. No assignments will be accepted for credit after graded assignments have been returned, except in extraordinary cases. Please let the instructor know immediately about unusual circumstances that will make it hard to complete assignments on time so that appropriate accommodations can be made.

6. Exam

There will be a 2-hour in-class midterm examination late in the semester. The exam will be open book, open notes -- that is, you may use your textbooks and all your lecture notes during the exam. There is no final exam because we have a final project instead.

7. Grading and Grading Standards

The first seven programming assignments will count, collectively, for 60% of the final grade. The midterm exam will count for 20%, and the final project for 20%.

Each assignment will be graded on the basis of both correctness and programming style.

Correctness is a measure of how well the program meets the assignment specifications. We may provide some test data, but you should consider all possible cases, and may need to provide additional test data to make sure your program is completely correct. You should always hand in both a printout of the program itself (that is, the file or files containing the LISP functions you have written) and a runtime session demonstrating the program being run with as many different types of input data as your program can handle.

Style is an important part of any computer program. Important stylistic issues include good modular structure, the use of appropriate flow constructs (which, in LISP, often means recursion), and good documentation, including header comments at the start of each function explaining its purpose, input, output, and side effects (if any). Names of variables and functions should clearly describe their purpose. When printed out, the code should be aligned in an easy-to-read fashion. The TA will describe and demonstrate correct style with examples in section. Please ask me or the TA if you have any questions about LISP style!

The final project will be graded using a rubric; see the project info for details.


 

8. Course Syllabus and Weekly Readings

(Note: The readings for each week are listed before the week in which the topic will be covered.)
September 3
LECTURE: Overview of Artificial Intelligence as a topic. Course overview. Current topics. Introduction to CommonLISP. Atoms; lists; s-expressions; arithmetic functions; list-manipulating functions; defining one's own functions.
Section: LISP Recursion, Mapping, Iteration. General help getting started with LISP and with Asst #1.

Reading: Russell&Norvig [RN] chapters 1-2. Graham chapters 1-4.

(A note on the reading: except for chapter 1, readings from Graham are meant to be skimmed and then used as needed. Readings from Russell & Norvig are dense and should be read carefully. I have tried to be as precise as possible about which chapter sections are relevant to the upcoming lecture, but feel free to read surrounding chapter sections as well, and if we move ahead or behind in the lectures, please follow along accordingly.)

September 10
LECTURE: Problem Solving, State-Space Search and Knowledge Representation.
Assignment #1 due.
Section: LISP Debugging. Additional constructs. Building data structures. Help with Asst #2.

Reading: RN chapter 3 and 4.1-4.2. Graham chapters 5-9.

September 17
LECTURE: Continue with Problem solving. Searching for best solutions; heuristics for efficient search.
Assignment #2 due.
Section: Topics related to Asst #3.

Reading: RN chapter 6 and 22.1-22.3. 10.6-10.7

September 24
LECTURE: Game playing -- search under adversarial circumstances. Probabilistic search. Begin Natural Language Processing (NLP) and Knowledge Representation (KR): Introduction to these two areas and to their interaction.
Assignment #3 due.
Section: Topics related to Asst #4.

Reading: RN chapter 22.4-22.7, 23.4, and 10.1-10.4, and 10.6-10.7.

October 1
LECTURE: Natural language. Syntax: parsing; production rules; transition networks; parse trees. Semantics: extracting meaning from sentences. Discourse processing.
[Discussion Board posting on Current News Topics]
Section: Topics related to Asst #4.

Reading: RN chapter 7.1-7.6, 9.1-9.2.

October 8
LECTURE: Mathematical Logic and Predicate Calculus as a knowledge representation system. Clause form and the Resoluton Principle.
Assignment #4 due.
Section: Topics related to Asst #5.

Reading: RN chapter 18 (all).

October 15
LECTURE: Machine Learning. Samuel's checkers algorithm. Learning and creating concepts from examples.
[Discussion Board posting on Current News Topics]
Section: Topics related to Asst #5.

Reading: RN chapter 20.1, 20.3, 20.5, 22.8, 4.3.

October 22
LECTURE: Continue Machine Learning with Probabilistic learning, Markov Chains, Genetic Algorithms. Neural Networks.
Assignment #5 due.
Section: Topics related to Asst #6.

Reading: RN chapter 24.1-24.4.

October 29
LECTURE: Continue Neural Networks. Begin Computer Vision: low-level image processing; edge and object detection.
[Discussion Board posting on Current News Topics]
Section: Topics related to Asst #6.

Reading: RN chapter 24.5-24.7.

November 5
LECTURE: Computer Vision: edge and object detection; high-level vision; blocks-world, vertex labeling, constraint relaxation. Stereo matching.
Assignment #6 due.
Section: Topics related to Asst #7.

Reading: Adventures in Modeling, pages 1-35.

November 12
LECTURE: Modeling and Simulation with StarLogo.
Preliminary Project Proposals Due.
Section: Topics related to Asst #7.

Reading: Adventures in Modeling, pages 37-76 (or more).

November 19
LECTURE: Continue Modeling and Simulation with StarLogo.
Assignment #7 due.
Final Project Proposals Due.
Section: Review in preparation for midterm

Nov 26:Thanksgiving break -- no class

December 3
IN-CLASS MIDTERM EXAM.

December 10
LECTURE: Planning and Plan Recognition. The future of Artificial Intelligence.
Section meeting time may be used for additional lecture topics or project presentations, if needed.

Reading: RN chapters 26, 27.3-27.4.

December 17
Student project presentations.
FINAL PROJECTS DUE by 5:30 PM.
Section meeting time may be used for additional presentations, if needed.


Return to
Course Home Page.
David Albert - albert@fas.harvard.edu - Last updated August 27, 2009