About this course
This course is about designing and implementing more intelligent software capable of reasoning using symbolic knowledge representations, and doing it with maintainable testable code.
This is a learn-by-doing course. Class meetings will be to demonstrate new concepts, try out things, and ask questions, not listen to lectures. For more, see How this course works.
The primary languages for this course are Common Lisp and JavaScript. Prior Lisp knowledge is not expected, but fluency in programming is.
The textbook for Lisp is Paul Graham's ANSI Common Lisp. You must have this book for the exercises. It has some great examples, plus an appendix with all 900+ Common Lisp functions.
JavaScript is everywhere, from browser to back-end. JavaScript shares many features with Lisp. This is not accidental. Brendon Eich, who created JavaScript, was originally going to implement Scheme.
The recommended online references for JavaScript are The Modern JavaScript Tutorial, and the Mozilla Developer site. For starters, see my tips on modern JavaScript. For more of an introduction to JavaScript tutorial, you can try my tutorial, Hello, JavaScript.
Start with the setup tasks. As soon as you have the first task done, start working on some exercises as well.
Wakeup Quizzes

Many classes will start with a short Wakeup Quiz. Bring a laptop to every class. The goal of these is to kick-start brain cells. Missing a few quizzes is not a big deal. Participation in the total of all quizzes is about 5% of your grade. All serious answers count.