Practical Lisp for Programmers

No credit.

Prof. Larry Hunter

Practical Lisp for Programmers

SoM #2817b

PORTL (School of Medicine room 1644)


Tuesdays and Thursdays, 11:00am-12:30pm

Office hours by appointment

Important Notices

Course description

This course is an introduction to the facilities, style and modern usage of the programming language Common Lisp.

Why lisp? Not only is it one of the main languages that our tools have been written in, it's a great language for other reasons. You can look at a powerpoint presentation I gave last year about why I think lisp is worth learning.

Goals for the course: This class assumes you are already a pretty good programmer in another language (e.g. C, Java, perl) and know about things like types, data structures, functions, etc. You will come away with an understanding of how to write and understand idiomatic lisp code, and with an appreciation of some of the advantages that lisp has to offer over other programming languages. We will cover at least briefly most of the built-in functions that common lisp offers, and some useful extensions to the ANSI language (including web and network tools, system definition facilities, and interfaces to external databases). We will also cover practical issues such as debugging, optimization, and interfaces with code written in other languages.

Course Requirements:

Course materials

Here are sources for materials you will need to do this course. Things that are restricted to our site (like the license file for ACL) will only be accessible from a UCHSC IP address. If you want to avoid all of this installation stuff (the experience may be useful later, though), just use emacs on compbio, which, other than the keybindings (which are specific to a particular user) is all set up. You can also use compbio as an example to crib from; look at the following directories on compbio: There is an XEmacs install on hal, which shows how to do it for XEmacs, although there are a few minor differences here and there between what I describe here and how hal is set up.

Lectures & Transcripts

Below are the lecture notes and transcripts of sessions that I do during class.
  1. Getting started: installation, symbols and variables powerpoint transcript
  2. Defstruct and functions powerpoint transcript
  3. Conses, equality, conditionals, files powerpoint transcript The foo.lisp file.
  4. Graphs, circular lists, hashtables, multiple-values, iteration constructs (dotimes, dolist, map) transcript
  5. DO, streams, with-open-file, read-*, format, position*, the lex-string program transcript
  6. Packages, declare/declaim/proclaim, adjustable arrays (& buffered reads), the unoptimized egome program transcript
  7. Debugger, profiler, optimization. Some additional notes on the example in class. The optimized egome program, transcript