First Technology Transfer

Standard and Advanced Technical Training, Consultancy and Mentoring

Foundations of Lisp Programming

Duration: 5 Days

Intended Audience

This course is for those that need to get up to speed with Lisp programming, or to refresh their Lisp programming skill and master Lisp programming techniques used in the implementation of Expert Systems and Artificial Intelligence applications. Attendees are assumed to already be experienced programmers in a language such as e.g. C/C++ or Java

Course Overview

Lisp can be considered as one of the founding languages of artificial intelligence. It is not widely taught these days, and has something of a reputation as being rather an esoteric language with "lots of parentheses". It is, in fact, a very powerful language which is mastered by constant thought and practice. AI is commonly thought of as having to do with things such as Robots, Neural Networks, Chess Playing etc. This course is concerned with fundamental aspects of AI, from a programmer's perspective:

  • Designing and implementing intelligent components using symbolic knowledge representation
  • using and sharing semantic knowledge over the web
  • developing tools for authoring the knowledge needed by such systems
  • doing all of this using maintainable code

The course will focus on

  • Lisp programming and the use of lisp for symbolic knowledge representation and manipulation
  • Development of knowledge authoring systems
  • Lisp based programs for using and sharing semantic knowledge using JSON and XML.

Course Contents

  • Overview of Lisp
    • History and features of Lisp as a language for rapid programming and protoyping of large complex systems
    • Compiling and running lisp code
    • Basic Lisp syntax
      • Lisp forms and their evaluation
      • Defining functions in Lisp
      • Assigning values to variables in Lisp
  • Lisp structured programming
    • Control flow: conditionals and non-local exit
    • Special and Local variables
    • Iteration and recursion
    • Packages
  • Lisp data types, data representation and data handling
    • Lists in depth
    • Numbers
    • Arrays, Sequences, and Strings
    • Streams, Pathnames and File I/O
  • More advanced Lisp
    • More advanced Usage and calling of functions, including &key, &optional, &rest arguments, as well as funcall and apply
    • Structures and Hash Tables
    • Bits and bytes
    • Macros
    • Closures
  • Object Oriented Lisp - CLOS
    • Using the Common Lisp Object System (CLOS)
    • Classes, instances, and slots
    • Methods and Generic Functions
    • Inheritance and class precedence lists
    • Multiple dispatch
  • Performance and Correctness
    • Performance considerations - tuning CLOS
    • Garbage collection
    • Error conditions and error handling
  • Knowledge representation and Lisp
    • Plans, actions, state spaces, goals
    • Logic and reasoning using Lisp
    • Handling uncertainty and working with belief networks
  • Search and problem solving
    • uninformed and heuristic search
    • adversarial search and games
    • basic expert systems
    • basic planning and theorem proving
  • Functional programming in Lisp
  • Lisp and Machine Learning