There will be no tight connection to a single
programming language, and there will not be a lot of lecture time
devoted to language learning. We will dive right in to sizeable
projects, some of which may have a recommended language
but normally no strict requirement. Students are normally free to use
the language(s) of their choice. However, it is recommended that they choose
a language that supports the formation and manipulation of large sequences
(often nested) of symbols (i.e. mixtures of letters and numbers) such as
"Age(Fred) + 18 = 35 AND Height(Wilma) > 175". Most students choose PYTHON or JAVA.

When instructors provide supporting code, it will normally be in a standard
language such as Python, JAVA, C++ or MATLAB. No machines maintained by the department
will house any of the software needed for this course. Students are expected to download
all relevant software (all of which is free and easily accessible) to their own machines.

The four main topics in this autumn-2017 version of the course will be A* search,
constraint-satisfaction reasoning, deep learning and reinforcement learning. These will
be combined in various ways across 4 different modules, which will be delivered in
three separate demonstration (demo) sessions, with approximately one month separating
each session.

This course is definitely NOT one that a student can expect to join late in the
semester or ease into . Work on the first project should begin
immediately after the first lecture.

Each project and module involves considerable
programming effort, so you will need to hit the ground running
at the beginning of each one. Waiting until the last minute (weekend) has
been the demise of many students in this course.

The instructor of this course may use two different media to inform students:
1) This web page and 2) BLACKBOARD. In general, this web page is used as a repository for
course materials and relatively static schedule information, while BLACKBOARD is used as
a repository for student deliveries, a sign-up sheet for demo sessions, a medium
for dissemination of certain interim grades (such as those for
individual projects), and as a bulletin board for important messages (such as
lecture cancellations, changes to demo sessions, etc.).

Lectures

Lab (Help) Hours:

The course lab hours are not used in the traditional sense (of all students meeting
in a room and doing "lab exercises"). The lab hours are simply the times at which our
student assistant(s) are available to help students. In addition, in the rare instance
that an instructor feels the need for extra lectures, (s)he may choose to use the
course lab hours.