This page gives highlights of past lectures and provides lecture notes, reading assignments, and exercises.
Chapters and sections in the readings are from the textbook, unless specified otherwise.
Course introduction and administration.
Overview of course topics.
(Ideal) Rational agents.
Environment, percept sequence, actions,
internal knowledge, autonomy.
Examples of natural and artificial agents.
Agents as mappings.
Classes of agents, from simple reflex agents to utility-based agents.
More on F#.
Variable scope ands scoping rules. Function definitions.
Pattern matching. Patterns in let expressions and in function definitions. The match construct. Meaning and common uses. Scoping of pattern variables in match.
Algebraic datatypes (ADT), or discriminated unions, in F#.
Pattern matching with ADTs.
Functions accessing and manipulating ADTs.
Using ADTs to encode arithmetic expressions.
Simple evaluators of arithmetic expressions.
Parametric types in F#. Motivation and uses.
Parametric algebraic datatypes.
F# Lists. Basic features and examples.
Using pattern matching and recursion to implement functions over lists.
More on F#.
Association lists. Using lists to implement other data types.
Maps as association lists. Sets as lists with no repeated elements.
Option types. Motivation and uses.
Mutable and immutable records. Pattern matching with records.
Mutable variables and imperative code.
Modeling problems as search problems.
Search space and strategies.
General search algorithm.
General assumptions on environments and cost functions.
breadth-first, depth-first, uniform-cost, iterative-deepening search.
Completeness, optimality and complexity.
Completeness, optimality and complexity of A*.
Comparisons with other strategies.
Local search procedures and optimization problems.
Hill-climbing, simulated annealing, beam search and so on.
problem encodings, combination and mutation.
Beyond Classical Search