This is the handout from a talk I presented at the local CS Colloquium.
Abstract:
This talk will touch on how standard usage patterns for the Goto statement became embodied in higher level control structures, ways in which higher level control structures can often express the intent of the programmer more clearly than lower level control structures, some of the controversy surrounding the Goto statement, common reasons for and ways of using Goto, and common ways of implementing arbitrary control structures in languages that do not contain the Goto statement.
This is the handout from another talk.
A
video of the DSL talk was also made.
Abstract:
This talk will discuss various approaches to implementing Domain Specific Languages (DSLs), with an emphasis on ease of implementation. Some language specific techniques will be discussed, along with some more general approaches that can be applied in many programming languages. A couple of DSLs used within SSU/IT may be described if time permits.
This is the handout from another talk.
A
video of the computer prehistory and early history talk was also made.
Abstract:
This talk will superficially breeze through a few thousand years of computing and calculating history, discuss some ideas and technologies that played key roles in early computing, and describe some features of a few early computing devices. Special emphasis will be given to the ENIAC and some issues in decimal arithmetic.
This is the handout from another talk.
A
video of the stored program computer talk was also made.
Abstract:
The stored program computer held instructions and data in the same memory. This enabled programs to manipulate other programs (or even themselves!) and made it possible to decouple the external representation of a program from the actual instructions executed by the machine. This in turn allowed new forms of abstraction to be created and used by implementing them in software. This talk will discuss the creation of the stored program computer and some early software and hardware ideas related to computational abstraction.
Lisp Stuff
Simple Lisp Interpreter in C (no GC, no tail call optimization)
Simple Lisp Interpreter in C (no GC, has tail call optimization)
Have you ever wished you could use "goto" in Scheme?
Purely functional letrec for Scheme
Just for fun, a purely functional letrec based on the Y combinator. This one uses a dispatch function.
Another purely functional letrec for Scheme
Another purely functional letrec based on the Y combinator. This one does the magic with a delayed tuple of sorts. It's longer, but I like it better because it feels more direct.
An implementation of Lisp 1.5 style Funargs for Scheme
This uses fluid-let and call/cc to simulate the capture of a dynamic environment, as in Lisp 1.5 Funargs.
An implementation of Funargs for PDP-1 Basic Lisp (Described in This book, you can get a Software Kit for running it on SIMH)
Running Lisp 1.5 in the SIMH IBM 7094 emulator.
Lisp 1.5, one of the earliest implementations of Lisp, has been resurrected after lying dormant for decades.
Logo Stuff
My favorite Logo implementation.
A dodecahedron picture, with Logo code for creating it
This is useful when playing Hunt The Wumpus (a game written in BASIC that can run, for example, on Michael Haardt's Basic Interpreter)
I dug through the MIT AI Lab publications trying to find anything I could that is relevant to the Logo project.
An implementation of FUNCTION aka funargs for UCB Logo
This implements a limited form of Dynamic Closures for UCB Logo.
tomod.sh: A shell script for turning the first eight pages of a PDF into a PocketMod