CSCI E-220: Artificial Intelligence

Course Information and Weekly Syllabus

Fall Semester 2011-2012
Thursdays, 5:30 to 7:30, Science Center B-10
Sections: 7:35 to 8:35, Science Center B-10
Instructor: David Albert


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 ( The best way to reach me is by email. I am also available before and after class, and by appointment.

Teaching Assistant: TBD. 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

The two required texts for this course are available at the Harvard COOP bookstore:

The Russell & Norvig text will provide more technical reading for the course, to supplement the more informal lecture notes. Readings from Graham are designed to help you get up to speed with LISP, 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.

5. Assignments

There will be a total of seven programming assignments plus an independent final project. You will use Common LISP for several of the assignments. For some others, including the final project, you may use a programming 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 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.

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.)
Week 1: September 1
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.)

Week 2: September 8
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.

Week 3: September 15
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 5, 23.1-23.2, 12.1.

Week 4: September 23
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 23.3-23.7.

Week 5: September 29
LECTURE: Natural language. Syntax: parsing; production rules; transition networks; parse trees. Semantics: extracting meaning from sentences. Discourse processing.
Assignment #4 due.
Section: Topics related to Asst #5.

Reading: RN chapters 7, 8, and 9.

Week 6: October 6
LECTURE: Mathematical Logic and Predicate Calculus as a knowledge representation system. Clause form and the Resoluton Principle.
[Discussion Board posting on Current News Topics]
Section: Topics related to Asst #5.

Reading: RN chapter 18.

Week 7: October 13
LECTURE: Machine Learning. Samuel's checkers algorithm. Learning and creating concepts from examples.
Assignment #5 due.
Section: Topics related to Asst #6.

Reading: RN chapter 20, 4.1-4.2, and 18.7.

Week 8: October 20
LECTURE: Continue Machine Learning with Probabilistic learning, Markov Chains, Genetic Algorithms. Neural Networks.
[Discussion Board posting on Current News Topics]
Section: Topics related to Asst #6.

Reading: RN chapter 24.1-24.4.

Week 9: October 27
LECTURE: Continue Neural Networks. Begin Computer Vision: low-level image processing; edge and object detection.
Assignment #6 due.
Section: Topics related to Asst #7.

Reading: RN chapter 24.5-24.7.

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

Reading: StarLogo Manual: "Getting Started" and "Tutorial".

Week 11: November 10
LECTURE: Modeling and Simulation with StarLogo.
Assignment #7 due.
Preliminary Proposals Due.
Section: Midterm Review.

Reading: RN chapters 26, 27.3-27.4.

Week 12: Nov 17

Final Project Proposals Due.

Nov 24:Thanksgiving break -- no class

Week 13: December 1
LECTURE: Planning and Plan Recognition.
Section: Final project support

Reading: current topic readings will be announced in class.

Week 14: December 8
LECTURE: Current Topics in A.I. The future of Artificial Intelligence.
Section meeting time may be used for additional lecture topics or project presentations, if needed.

Week 15: December 15
Student project presentations.
Section meeting time may be used for additional presentations, if needed.

Return to Course Home Page.
David Albert - - Last updated September 8, 2011