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.
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
