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 Attribution-NonCommercial-ShareAlike 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 Consistency-Based 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 consistency-based 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 Consistency-Based 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 feed-forward 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 exclusive-or (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 single-stage and multiple-stage 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 open-source 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 open-source 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 alpha-beta pruning planner.

Chapter 12: Learning to Act

See AIPython for a Python implementation of reinforcement learning algorithms.

We have the following open-source applets:

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)

Chapter 14: Ontologies and Knowledge-based Systems

Some ontologies (in OWL functional syntax):

This code runs in AILog2:

  • prove.ail a vanilla meta-interpreter (Figure 14.9), which can be used with elect_base.ail a base-level representation of the electrical domain (Figure 14.10).
  • prove2.ail a vanilla meta-interpreter, with disjunctions and built-ins; Figure 14.11.
  • bprove.ail a meta-interpreter for depth-bounded search; Figure 14.12.
  • hprove.ail a meta-interpreter that builds a proof tree; Figure 14.13.
  • dprove.ail a meta-interpreter that delays goals; Figure 14.14. This can be used with elect_delay.ail a base-level 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, 2017-11-06 David Poole