Lee Spector: Code


Selected Projects, listed in roughly reverse chronological order

Pucks, an environment for experiments and education in artificial intelligence and artificial life.

TagGP, Clojure code for tree-based genetic programming with tags.

Clojinc, a resource for learning clojure.

Push, a programming language for genetic and evolutionary computation, and PushGP, a genetic programming system that evolves programs in Push:

TinyGP, a simple genetic program system, derived from Riccardo Poli's "tiny_gp" and implemented for PLT Scheme.

Genetic Programming for Finite Algebras, for producing terms of finite algebras by means of genetic programming using PushGP and ECJ.

Division Blocks, a framework for artificial life involving physically simulated, three-dimensional blocks.

Artificial Intelligence in 3D Virtual Worlds, a framework for artificial life involving physically simulated, three-dimensional blocks.

SuperDuperWalker, by Jon Klein, Kyle Harrington, and Lee Spector: an environment supporting experiments on the evolution of locomotion, developed for use in CS193T: Biocomputational Developmental Ecology at Hampshire College. This code requires Jon Klein's breve simulaiton engine (http://www.spiderland.org/breve).

SwarmEvolve, a series of experiments investigating the evolution of goal-directed flying behavior 3D virtual worlds. This code requires Jon Klein's breve simulaiton engine (http://www.spiderland.org/breve) and in some cases other code as described within. For descriptions of the SwarmEvolve systems and on-line movies of their behavior see http://hampshire.edu/lspector/gecco2003-collective.html.

qgame (Quantum Gate And Measurement Emulator), a program that simulates the operation of a quantum computer. Available from the QGAME page.

Parrondo's Paradox Simulator, an on-line simulator that demonstrates an interesting game theoretic phenomenon: http://hampshire.edu/lspector/parrondo/parrondo.html.

Unscramble, a simple genetic algorithm (in Common Lisp) that demonstrates how standard Darwinian mechanisms could unscramble a telephone directory in which all of the names and numbers have been paired randomly. This was written to accompany an article called "Hierarchy Helps It Work That Way" in the journal Philosophical Psychology.

ErunticLab, a genetic programming-based artificial life environment.

lgp, a linear, steady-state genetic programming engine in Common Lisp. Except where noted this will work in any modern Common Lisp system.

MidGP, a Common Lisp stack-based genetic programming engine similar to HiGP (see [Stoffel and Spector, 1996]).

FPS6, a much-extended version of Mark Watson's FPS (Forward Production System) rule-based programming tool.

mcl-music, a high-level code interface for making music from Macintosh Common Lisp. mcl-music produces MIDI output (which may be routed to the Mac's internal "QuickTime Musical Instruments" synthesizer) from symbolic descriptions of musical parts. mcl-music is built on top of OpCode's OMS and an MCL/OMS interface kindly made available by Noteheads. For convenience, the package here includes everything that you need except MCL itself. (If anyone from Opcode or Noteheads objects to this inclusion please let me know!)

CodeStepper, a Common Lisp facility for the efficient step-by-step evaluation of code. This can be useful, for example, for interleaving the execution of multiple agents in a single virtual world.