Department of Computer Science
CSCI 2400 - Artificial Intelligence

The goal of the subfield of Artificial Intelligence is to build software systems that behave "intelligently". By this, we mean that the computer systems "do the right thing" in complex environments--that they act optimally given the limited information and computational resources available. This course provides an introduction to artificial intelligence with an emphasis on the programming techniques and skills needed to develop high-performance AI systems.

The course will start with a focus on the design of intelligent agents. An intelligent agent is a software system that can interact with an external environment by perceiving that environment and taking actions to change the environment. We will then move on to discuss the biggest trend in AI - Deep Learning.

TEXTS (required):
Stuart Russell & Peter Norvig, Artificial Intelligence: A Modern Approach, Prentice Hall, 3rd Edition, and on-line handouts
Eric Chown, 221 Searles
Email address:
Web address:
Office Hours: W,1:30-3:00, T 1:00-2:30, or by arrangement
Class meeting: T TH 11:30-1:00 - Searles 223
Slides, on days that I use them, will be posted on the course Piazza site. Many will come from the Aima website

COURSE OUTLINE (subject to change):
Week of Topics Readings Work Due
Aug 31 Introduction, Intelligent Agents Chapter 1, 2
Sep 5 Problem Spaces and Search Chapter 3
Sep 12 Informed Search Chapter 4
Sep 19 Game Theory and Search Chapter 5
Sep 26 Reinforcement Learning Chapter 20
Oct 3 Knowledge Representation Chapter 6
Oct 10 Classification and Learning Chapter 7
Oct 17 Decision Trees Chapter 18
Oct 24 Neural Networks Chapter 19
Oct 31 Deep Learning
Nov 7 Deep Learning
Nov 14 Neural Networks Chapter 19
Nov 21 Self Driving Cars
Dec 5
(1/2 week)
Current Topics
Dec 13 *** final ***
The work for this course includes class participation, readings, two tests, several programming assignments, and assorted homeworks.

This is a 2000-level computer science course oriented towards programming. It is my expectation that everyone taking the course will be comfortable writing and modifying significant programs. We may work with Python or Java depending on the assignment. The bulk of the homework for the course will involve working with programs, but there will also be written work too. You cannot pass this course without completing all of the assignments.

Assignment lengths will be tailored based upon my expectation of a reasonable amount of work necessary to complete a program. For example, if I give you two weeks to complete a program I would reasonably expect you to spend as much as 20 hours on that program (though your actual time may be significantly less). Again, that period of time is based upon the expectation that you are a competent programmer, if you are not, programs may take significantly longer.

Collaboration Policy and Honor Code

Please review the Bowdoin Computer Science Collaboration Policy. You are responsible for understanding and adhering to this policy! We will discuss specifics as they apply to this course in class, but generally assignments are Level 1, Projects are Level 2, and Exams are Level 3.

From the Bowdoin catalogue: "Course grades are defined as follows: A, the student has mastered the material of the course and has demonstrated exceptional critical skills and originality." The material of the course consists of homework assignments, class participation and exams. A "master" of this material is a student who successfully completes all of the homework assignments (and notably shows creativity in doing so), is an active and productive participant in classroom discussion (and does not miss class, nor show up late), and shows a thorough understanding of artificial intelligence on the exams.

Any competent computer scientist should be able to pick up your programs and quickly understand them. Your programs should not merely complete the assignment, they must be well documented, cogently written, and robust. My standard for this class will be to assume that you are writing these programs for an AI company and that other people in the company will be using and modifying your code. Writeups should be taken as seriously as a paper for an English or History class.

I take it as a given that you will be in class on time every day. Not achieving this basic level of performance will reduce your grade in the course. Further, good students will actively participate in class discussions.

There will be two exams in the course. Details will be given as they draw near.