NOTE 1: Check all code with the Unit Tester and the Lisp Critic before submitting. Even when there are no unit tests, all code can and should be checked with the Lisp Critic. If I notice mistakes in code that the Critic catches, I stop reviewing immediately and return the code.
NOTE 2: Type your function definitions into a file, not the Lisp Listener window! Code typed in the Listener window will be badly indented when submitted, and returned unreviewed.
Exercises versus Applications
Exercises are small coding problems. Like calisthenics, they help you focus on and strengthen specific "coding muscles."
Applications are larger coding problems, requiring you to master and apply multiple coding skills and basic AI concepts.
Both are critical for me to get a measure of what you know (see the rules on grading). In the first third of the course, you'll mostly do exercises, unless you already know a lot of Lisp. As the course progresses, you should shift over to more application work.
Your goal for this course is to prove to me that you're a good AI programmer. That means showing that you know how to apply the major tools of Lisp to AI problems. The best way to do that is to
- Do some (but not all) exercises from every chapter of Graham that has exercises, and/or the Lisp exercises, to show breadth of Lisp skills
- Do as many of the applications as you can to show your AI skills
Don't put off the application projects. Mix them in with the book exercises as soon as you've done the first 5 basic chapters of Graham.
Exercises
- Exercises from Graham. A quick guide to the exercises in Graham's ANSI Common Lisp. Read this guide before sending anything from Graham! It says which exercises are OK to submit, and modifies many of them.
- Lisp Exercises. General Lisp exercises.
- Challenges. Challenges are typically two or three times longer and/or more difficult than average exercises. They involve the application of multiple skills and the ability to keep complex long code readable and maintainable. Students who come to this course with no prior Lisp or Scheme experience should do at least a few challenges. More experienced programmers should focus on challenges over simpler exercises.
- Deductive Retriever Exercises. A few exercises writing rules in the deductive retriever, and some exercises modifying the deductive retriever code.
Applications
This set changes and grows every year. Newest, neatest, but least defined is the Google Freebase project.
- Build a Freebase Lisp client and applications
- Bug Explainer -- a pattern-based explainer of novice Lisp bugs; requires knowing about pattern matching and Webactions
- Robot Planner -- a logic-based robot planner, modeled after the classic Shakey robot system
- Web Exercises -- a mix of exercises using Lisp functions to access the Web, leading up to a browser-based interface to a rule base (the Lisp Critic)
- Semantic Web exercises -- some general exercises is getting semantic information from the web in various forms
- Knowledge Editor -- a browser-based editor for a frame representation system, similar in spirit but not look-and-feel to Protege.
- HR Matcher -- an intelligent human resource jobs to applicants matching system
- Super Creanimate -- a conversational user-driven tour through biological reasoning on form and function