Suppose mod(Mod,Prereqs,Teaches) is true if module Mod covers the elements of the list Teaches and requires that the students have already covered the elements of the list Prereqs.
Suppose we decide to represent the problem of designing custom courses as a search problem wheremod(m1,[],[intro]). mod(m2,[intro],[semantics,symbols]). mod(m3,[symbols,semantics],[proofs]). mod(m4,[intro],[search]). mod(m5,[search,symbols],[advanced_search]). mod(m6,[search,semantics],[csp]). mod(m7,[symbols,semantics],[kr]). mod(m8,[proofs],[metainterpreters]). mod(m9,[semantics],[actions]). mod(m10,[actions,metainterpreters,search],[planning]). mod(m11,[search,metainterpreters],[dtlearning]). mod(m12,[csp],[nnlearning]).
For example, suppose an instructor wants to cover nnlearning, and proofs, then any node that contains both nnlearning and proofs is a goal node. Then a solution is the path that starts with [], then has arc labelled with m1 to node [intro], then has arc m4 to node1 [intro, search], then has arc m2 to node [intro, search, semantics, symbols], then has arc m6 to node [csp, intro, search, semantics, symbols], then has arc m12 to [csp, intro, nnlearning, search, semantics, symbols], then has arc m3 to node [csp, intro, nnlearning, proofs, search, semantics, symbols], which is a goal node.