resources & downloads
- all resources are now located here
AI Programming in Clojure - the course
other links
- getting started - help for clojure newbies
- clojure.org - the main Clojure site
- API docs - API documentation
- ClojureDocs - community-powered documentation and examples
- Clojure style guide
AI Programming in Clojure
course details
lecture series
these will develop over the next few weeks...
- introduction
lecture: intro slides (first & last ppt?)
lecture: first trace
reading: Clojure from the ground up - check the first couple of pages
tutorial: AIP-T1
other: start thinking about which book will suit you best - legal move generation & search
lecture: lmgs1 and definitions
reading: (i) clojure maps (ii) search - any AI book or cambridge (stop when you get to prolog)
tutorial: Legal Move Generators - recursion (head)
lecture: recursion-trace-1
lecture: using trace
lecture: more examples
tutorial: recursion-1 then recursion extra if you have time
reading: pick up an AI book & read about the travelling salesman problem - destructuring, variadic args, etc
lecture: destructuring
lecture: putting ideas together
reading: one of the clojure books (i) destructuring let (ii) map assignment (iii) variadic args
reading: form an opinion about when to use vectors & when to use lists
tutorial: develop your own solutions to the current Part I & II presentation problems - recursion (tail & recur)
lecture: recursion-2 - tail recursion & recur
reading: one of the clojure books: variadic arguments & "recur"
tutorial: tail & recur - working with trees
lecture: trees-1
reading: if you have not already covered Big O notation check out A Beginner's Guide
-- Big O notation is used to analyse the performance & complexity of algorithms
-- including those that search & traverse trees.
tutorial: develop solutions to Questions 2.x and 3.x of Part I & II presentation problems - using the matcher
lecture: matcher-1
reading: the tutorial in the matcher documentation
tutorial: 1st matcher tutorial - representing world states & operators
lecture: step 1 -- the cafe example
reading: read the matcher documentation to see what is available
-- read about Clojure "for" and "doseq"
tutorial: extend the cafe example with additional rules and objects
-- look at the review section of the lecture. Can you answer the questions? - means-end analysis & planning
lecture: functions & definitions and some sample output
tutorial: check out the operator search in the Clojure tools section - assessment part 5 -- operators
part 5 of the assessment involves writing state change operators for a given problem (see assessment specification). For this work you will use the Operator Search engine (not the planner) -- while this is less optimal (in processing time) it is more forgiving with operators containing logical inconsistencies.
Please read the following (these are mostly references into the documentation of the Clojure matcher)...- the course work spec - check part V
- state change operators (matcher documentation)
- using the operator search engine (see Clojure tools on www.agent-domain.org)
- other options for specifying operators (matcher documentation)
- a query mechanism for tuples
lecture: this brings a few ideas together, see: tuple search
reading: the Clojure matcher overview check (i) searching and selection (ii) iteration and collection
tutorial: -- provided in class - applying rules (+ fwd & bwd chaining)
lecture:- a detailed look at forward chaining: Ian's lecture
- fwd & bwd chaining -- a simple approach without matching which also uses atoms and forces evaluation of lazy structures.
- fwd & bwd chaining inference engines are described in most AI text books, read one!
- read a bit about Prolog and its approach to backward chaining.
- higher order fns & mapping
lecture: higher order fns
reading: there is a variety of material worth reading, most of it associated with specific languages:
-- clojure -- lisp -- wikipedia -- erlang -- haskell (ppt)
tutorial: write a fold for recursing on numbers & populate a map of partials for...
(i) factorial
(ii) sum-up-to
(iii) count-down where count-down of 5 is '(5 4 3 2 1)
(iv) 2^n
(v) foo, where foo is a suitable function that you think up. - more about search
lecture: refer to the quick guide for breadth search and A* search on the Clojure tools page - constraint propagation
lecture: 17-AIP-sudoku-1.clj
reading: a lecture from Stanford
tutorial: adapt the example in the lecture so it uses additional rules - interoperating with Java & other subsystems
lecture:- sample code for using Java UI classes
- an example linking subsystems with sockets clojure side NetLogo side, you will also need the sock2 extension for NetLogo
tutorial: build a UI with two text elements and an "eval" button to provide a Clojure REPL
course work & assessment...
- brief
- Part I & II presentation problems
- Part III & IV (UVa problems) guidelines
- Part V - operators
- Problem database
- Web Link
- peer-assessment-guide.pdf - a guide to peer assessment
- pmc(2b).xls peer assessment - mark calculator
- marking & feedback template
- UVa Problem template
links to UVa problems
peer assessment
problem templates
books & reference
- The Joy of Clojure, Michael Fogus & Chris Houser, ISBN 9781617291418
- Clojure Programming, Chas Emerick, Brian Carpe & Christophe Grand; O'Reilly
- Clojure for the Brave and True; Daniel Higginbotham; No Starch Press http://www.braveclojure.com/
- Clojure tools for AI -- AIP in a nut-shell