CS655 information for students

Course description

Here is a description of the course . You can read my daily class notes, updated after each class session (but generally not available before). The in-class "blackboard" is also available here.

Textbook online

You can see the textbook here. Is is also online here and here if you would like to read it that way. It costs you 2c/page to print the online version.

Appendix to the textbook

Here is the appendix to the textbook.

Other resources

Bo Majewski has created a nice map of programming language origins.

Éric Lévénez has built a very nice list of programming languages with references and a chart.

This interview with the developers of C, C++, and Java is full of fascinating insights. Thanks to B. Krishna for pointing it out to me.

I mentioned Intercal in class. Here is a book section on this marvelous language.

Notes on iterators

You can get iters.h from here.

You might need this before the #include line:


# define bcopy(s, d, n) memcpy ((d), (s), (n))

Debugging hints: Make sure you place IterSTART at the start of every procedure that includes IterYIELD or IterFOR. Don't put IterSTART in any other procedures. Make sure you place IterDONE at the end of every procedure that uses IterYIELD. Don't put IterDONE anywhere else. You must use IterSUB to invoke procedures from any procedure that includes IterYIELD.

This example shows how Python generators can be invoked in a coroutine fashion.

Io

Amalthea, an Io interpreter, for M$ computers | documentation
Diagram of the call to MakePair
Trace of figures 25, 26
A brief discussion of AND and OR in Io

ML

Here are the ML examples from class.

Here are some web materials on ML: first second.

If my ML source file is called "foo.ml", I like to put the following function in that file:


	val reload = fn _ => use "foo.ml"; (* helps during repeated runs *)

Currying

This page shows some details on how ML implements first-class functions in the context of Currying.

Haskell

Here are my notes and the examples from class.

Lisp examples

Here are the Lisp examples discussed in class.
Here are varieties of mapcar discussed in class, written in CLisp.

Lisp evaluator

Here is a working Lisp evaluator in CLisp to start you off, courtesy of Bill Dieter.
Here is the Lisp evaluator discussed in class.

Smalltalk examples

Here are the Smalltalk examples discussed in class.
Here are other Smalltalk examples.