Online Learning Resources
Here are some online learning resources for Artificial Intelligence: foundations of computational agents, second edition by David Poole and Alan Mackworth, Cambridge University Press, 2017. All material is copyright, and most is released under a Creative Commons AttributionNonCommercialShareAlike 4.0 International License or under the GLP.
The applets require Java to be enabled on your computer, and so might not work if you just click on them (as modern systems disable Java by default). Downloading the Java code should work. You should also try the Python code.
Chapter 1: Artificial Intelligence and Agents
The AAAI AI Topics site provides a wealth of introductory material on AI.
Chapter 2: Agent Architectures and Hierarchical Control
See AIPython for a Python implementation of the robot controllers.
The AIspace Robot Control Applet runs the examples from this chapter. Unfortunately, it isn't very user friendly, and the Python implementation should be seen as a replacement.
Chapter 3: Searching for Solutions
See AIPython for a Python implementation of search algorithms.
The AIspace Graph Searching Tool can be used to explore various search algorithms. The following sample problems are available under "File" > "Load Sample Problem":
 "Delivery Robot (acyclic)" is a representation of Figure 3.2, as used in Examples 3.5, 3.8, 3.10, 3.12, 3.13 and 3.15.
 "Delivery Robot (cyclic)" is a representation of Example 3.11 and Figure 3.7.
 "Misleading Heuristic Demo" is a representation of Figure 3.8 and is referred to in Examples 3.14 and 3.16.
Chapter 4: Reasoning With Constraints
See AIPython for a Python implementation of the CSP algorithms.
The AIspace ConsistencyBased CSP Solver Tool can be used to explore arc consistency and domain splitting for solving constraint satisfaction problems.
The AIspace Stochastic Local Search CSP Solver Tool can be used to explore (stochastic) local search for solving CSP problems.
Both solvers use the same representation for CSPs. The following sample CSPs are available under File > Load Sample CSP:
 "Scheduling Problem 1" is the example described in Examples 4.9, 4.11, 4.19, 4.23, 4.26 and shown in Figure 4.4.
 "Simple Problem 1" is the representation of Examples 4.12, 4.13, 4.14 and 4.18, and shown in Figure 4.2.
 "Simple Problem 2" is the representation of Example 4.20.
 "Crossword Problem 1" is a representation of Figure 4.14.
 "Crossword Problem 2" is a representation of the example on the second last slide for Chapter 4, lecture 1.
Chapter 5: Propositions and Inference
See AIPython for a Python implementation of the reasoners.
The following code runs in AILog2, a representation and reasoning system for definite clauses, with declarative debugging tools, assumbles, probabilities, etc.
 elect_prop.ail electrical wiring example; Example 5.7 from Section 5.3
 elect_ask.ail electrical wiring example with askables; Example 5.13 from Section 5.4.2
 elect_bug.ail the buggy electrical wiring knowledge base from Example 5.17 in Section 5.4.4
 elect_bug2.ail the buggy electrical wiring example from Exercise 5.6
 elect_bug3.ail a
buggy electrical wiring example, which fails to prove
lit_l2
, but should succeed  elect_cbd.ail electrical wiring example for consistencybased diagnosis; Example 5.23 in Section 5.5.3
 elect_naf.ail electrical wiring example with negation as failure; Example 5.28 in Section 5.6
 beach.ail default reasoning about swimming at beaches; Example 5.30 in Section 5.6.1
 bronchitis.ail diagnosis Example 5.30 in Section 5.6
 elect_abd.ail electrical wiring example with abduction; Example 5.35 in Section 5.7
 plumbing.ail plumbing domain from Exercise 5.2
Chapter 6: Planning With Certainty
See AIPython for a Python implementation of all of the planners.
The STRIPS to CSP applet takes in a STRIPS representation of a planning problem, and outputs a CSP representation that can be used in the ConsistencyBased CSP Solver or the Stochastic Local Search CSP Solver for various planning horizons.
 "Coffee Delivery" is a simplified coffee delivery domain with 3 locations, and two features.
 "Full Coffee Delivery" is a representation of the running example shown in Figure 6.1, described in the Example 6.1 and subsequent examples.
 "Elevator problem" is a simple problem of planning to get a passenger from the 1st floor to the 4th floor of a building.
Chapter 7: Supervised Machine Learning
See AIPython for a Python implementation of learning algorithms.
The AIspace Decision Tree Learning Tool can be used to learn decision trees from data, and to make predictions on new cases.
The AIspace Neural Network Learning Tool can be used to learn linear models and feedforward neural networks from data, and to make predictions on new cases.
These both use the same data representation. The following sample belief networks are available under File > Load Sample Datasets:
 "Mail Reading" is the data in Figure 7.1, and also includes some test data. This data is used in Examples 7.1, 7.7, 7.8, 7.9, 7.11, 7.10, 7.12, 7.18, 7.20
 "Marching Pennies" is the data from Example 7.9.
 "Holiday" is the data shown in Figure 7.12 and used in Examples 7.13, 7.20 and in Figures 7.12 and 7.18.
 "Boolean Example" gives data for exclusiveor (as well as "and" and "or" for the neural applet), as shown in Figure 7.11 and discussed in Example 7.12.
 "Likes TV" example from Figure 7.22 and Exercise 7.3
Chapter 8: Reasoning With Uncertainty
See AIPython for a Python implementation of probabilistic inference algorithms.
The AIspace Belief and Decision Networks Tool can be used to represent belief networks and can explain the inference it uses. The following sample belief networks are available under File > Load Sample Problem:
 The "Fire Alarm Belief Network" is the network of Figure 8.3, and used in Examples 8.15, 8.12, 8.13, 8.15, 8.20, 8.21, 8.23, 8.24, 8.26, and 8.27.
 The "Electrical Diagnosis Problem" is the network of Figure 8.5, and used in Example 8.17.
 The "Simple Diagnostic Example" is the network shown in Figure 8.4 and described in Example 8.16.
The Bayesian Localization demo shows how the beliefs of an agent can be updated based on sequential observations, for the models of Figure 8.13 and 8.16, and the domain of Figure 8.14, as described in Example 8.31 and 8.31.
Chapter 9: Planning With Uncertainty
See AIPython for a Python implementation of planning with uncertainty algorithms.
The AIspace Belief and Decision Networks Tool can be used to represent singlestage and multiplestage decision networks. The following sample decision networks are available under File > Load Sample Problem:
 "Delivery Decision" is a representation of Figure 9.7, described in Examples 9.6 9.10, and 9.11.
 "Simple Umbrella Decision" is a representation of Figure 9.9, described in Examples 9.13, 9.16, 9.18, 9.19, 9.21, 9.23.
 "Fire Alarm Decision Problem" is a representation of Figure 9.11, described in Example 9.15, 9.17, 9.20, 9.24, 9.25, 9.26.
There is also an opensource Java applet for the decision processes:
 Value Iteration Applet shows how iteration works for the domain of Figure 9.15, as described in Example 9.28, 9.30, 9.32, 9.33.
Chapter 10: Learning With Uncertainty
See AIPython for a Python implementation of learning with uncertainty algorithms.
We have the following opensource applets:
The Beta distribution applet shows how a beta distribution is updated based on the number of positive and negative examples, as shown in Figure 10.11, and discussed in Examples 10.14 and 10.15.
Chapter 11: Multiagent Systems
See AIPython for a Python implementation of a minimax with alphabeta pruning planner.
Chapter 12: Learning to Act
See AIPython for a Python implementation of reinforcement learning algorithms.
We have the following opensource applets:
 Tiny game shows how Qlearning and SARSA work for the tiny game of Figure 12.1, and described in Example 12.1.

The following applets work for the domain of Figure 12.2,
described in Example 12.2:
 A Simple Game with a rather simplistic rulebased controller that can be modified by students.
 Qlearning controller, as described in Section 12.4 and Figure 12.3
 Modelbased reinforcement learning controller, as described in Section 12.8, and Figure 12.6
 Linear function controller  SARSA with linear function approximation, as described in Section 12.9.1 and in Examples 12.6, 12.7
 Adversary controller (Qlearning, but where an adversary chooses the prize location).
 The following applets work for the for the grid world shown in Figure 9.15:
 The opensource applet MAS Learning shows the learning to coordinate algorithm of Figure 12.8 and described in Examples 12.8 and 12.9.
Chapter 13: Individuals and Relations
The following code runs in AILog2:
 elect_relational.ail electrical wiring example from Example 13.12
 west.ail a knowledge base about rooms from Figure 13.2 in Section 13.3.3
 before.ail the
before
relation of Example 13.27 and Figure 13.6  trees.ail the tree code of Example 13.29
 cfg_simple.ail a simple context free grammar and associated dictionary from Figures 13.7 and 13.8 in Section 13.6.1 (also in Prolog)
 trans.ail generates canned English; from Figure 13.9 in Section 13.6.4 (also in Prolog)
 nl_numbera.ail a simple grammar that enforces number agreement and builds a parse tree; from Figure 13.10 in Section 13.6.5 (also in Prolog)
 nl_interface.ail a simple natural language interface to a database; from Figures 13.11 13.12 and 13.13 in Section 12.6.6 (also in Prolog). In Prolog, Geography QA system: geography.pl, and one that first builds the query: geographyq.pl.
Chapter 14: Ontologies and Knowledgebased Systems
Some ontologies (in OWL functional syntax):
 http://artint.info/ontologies/lemon_computers.owl lemon computers
 http://artint.info/ontologies/apartment_building.owl apartment building
This code runs in AILog2:
 prove.ail a vanilla metainterpreter (Figure 14.9), which can be used with elect_base.ail a baselevel representation of the electrical domain (Figure 14.10).
 prove2.ail a vanilla metainterpreter, with disjunctions and builtins; Figure 14.11.
 bprove.ail a metainterpreter for depthbounded search; Figure 14.12.
 hprove.ail a metainterpreter that builds a proof tree; Figure 14.13.
 dprove.ail a metainterpreter that delays goals; Figure 14.14. This can be used with elect_delay.ail a baselevel representation of the electrical domain, with ok delayed.
Chapter 15: Relational Planning, Learning and Probabilistic Reasoning
 grades.xml AIspace Bayes representation of the grades of Figures 15.6 and 15.10.
This code runs in AILog2:
 delrob_sitc.ail the delivery robot in the situation calculus, as described in Section 15.1.1.
 leaving.ail ICL representation of the belief network of Figure 8.3 and Example 8.15; this representation is from Example 15.23.
 movie.ailog ICL representation of a simple movie domain.
 addition.ail ICL representation of probabilistic diagnosis of students who makes addition errors; Example 15.24.
Last updated, 20171106 David Poole