CS294-8 -- Fall 2006

CS 294-8 - Artificial Intelligence Programming Techniques

This page is under construction for Fall 2006.

Lecture 1 (Aug. 28, 2006). See the initial course handout and assignment 1 in PDF.

Lecture 2 (Aug. 30, 2006). The file of lisp programs we used in class is online as lect2.lisp. I suggest you set your browser so that files with the suffix .lisp are opened in emacs, or alternatively you can download the file to your own computer before opening it.

No class on Monday Sept. 4, Labor Day Holiday.

The program material from Peter Norvig's text is here, along with some other files that might be useful. The chapter 2 programs are in the file simple.lisp. The files named auxfns.lisp and auxfns.mac have some definitions used by many of Norvig's files, and so should ordinarily be read into a lisp system first.

Lecture 3 (Sept. 6, 2006). The file of lisp programs we used in class is online as lect3.lisp.

Lecture 4 (Sept. 11, 2006). The file of lisp programs is ans1.txt. A reasonably stable version of the generic arithmetic code is posted. This is not necessarily up to date. As I mentioned in class, fiddling with the packaging is a concern of mine, at least when the compiler environment must be set up right. And not all the details are filled in on all operations on all plausible mixtures of operand types. Implausible combinations will usually lead to a message that no method is available for the computation.

The second assignment is posted.

The due date may slip depending on class reaction. Since more people than not asked for more time, let's make it a week later.

The third assignment is posted. Due Oct 3.

Here's a link to a draft of a paper on Automatic Differentiation (of Algorithms)

For material discussed in class Sept 25, see Pragmatic Parsing in Common Lisp/ META paper by Henry Baker.. The code in the paper can be extended and packaged as shown here.

Here is the main site for

TILU, discussed as part of the lecture on Sept. 27.

A draft of the fourth assignment is posted too.

The permutation problem: a proposed solution (in FASL form only) is posted in this directory with the name permuter.fasl. If you load it into an Allegro Common Lisp version 8.0, you can execute a program this way:


cl-user(68): (setf r (permuter '(a b c d e)))

cl-user(69): (funcall r)
(a b d c e)
cl-user(70): (funcall r)
(a d b c e)
....

The order of the permutation is not important, but you do have to cycle through them all before repeating...

To test it you can can use this program...

(defun ttest (l n)
  (declare (optimize (speed 3) (safety 0) (debug 0) (compiler-speed 0)))
  (setf (symbol-function 'perm) (permuter l))
  (dotimes (i n) (declare (fixnum i))
    (perm)))

which is already in the file.
For example, on my computer,

(time (ttest '(a b c d) 10000000))
; cpu time (non-gc) 468 msec user, 0 msec system
 (time (ttest '(a b c d e f g h i j k l m n o p q r s t u v w x y z) 10000000))
; cpu time (non-gc) 531 msec user, 0 msec system

....




Here is the fifth assignment.

Email: fateman@.cs.berkeley.edu