CATALOG DESCRIPTION: Introduction to Lisp and programming knowledge-based systems and interfaces. Strong emphasis on writing maintainable, extensible systems. Topics include: semantic networks, frames, pattern matching, deductive inference rules, case-based reasoning, discrimination trees. Project-driven. Substantial programming assignments.

Instructor's course page

REQUIRED TEXTBOOK : Paul Graham , ANSI Common Lisp , Pearson/Prentice-Hall

COURSE COORDINATOR: Chris Riesbeck

COURSE GOALS: This course is about

• designing and implementing intelligent components for interactive distributed computational media

• developing tools for authoring the knowledge needed by such systems

• doing it all with maintainable code

PREREQUISITES: EECS 110 and EECS 111, or equivalent programming experience

DETAILED COURSE TOPICS:

• Common Lisp programming, including

• Symbols, lists, strings, arrays, and other built-in data structures

• Structures and the Common Lisp Object System (CLOS)

• Functions and macros

• Recursion and higher-order functions

• Symbolic knowledge representation techniques, including

• Hierarchically organized frame systems

• Horn-style deductive reasoners

• Test-driven development

• Semantics and the Web:

• Web clients and servers in Lisp

• XML-RPC clients and servers in Lisp

• XML and knowledge representations

HOMEWORK ASSIGNMENTS: The normal model of homework assignments does not apply to this course. Instead, students work as rapidly as possible through several dozen programming exercises involving a wide range of concepts and challenges. The exact set of exercises depends on each student's interests and skill development.

LABORATORY PROJECTS: Class lectures and class assignments will be organized around the class project. The class project will be some sort of intelligent web-based information system, but exactly what will be determined in class discussions, as we try to answer the AI question: why are computers so stupid?

GRADES:

  • Homework: 95%
  • Participation in class and the newsgroup: 5%

COURSE OBJECTIVES: After this course, students will be able to

  • develop standalone and web-based AI programs in Lisp using symbolic knowledge representation techniques
  • apply software engineering best practices, especially test-driven development, to the development of maintainable code