Courses and workshops
Taught at Grinnell College (1983-present)
Courses
- Algorithms
- Algorithms and data structures
- Algorithms and software
design
- Artificial intelligence
- Automata, formal languages, and
computational complexity
- Computational linguistics
- Computer networks
- Computer programming with Pascal
- Data structures
- Directed research: Restoring Greek
- Directed summer research: A German spelling checker
- Directed summer research: Grinnell Scheme
- Directed summer research: Syndication software development
- Fundamentals of computer science
- Fundamentals of computer science I
- Fundamentals of computer science
II
- Guided reading: Artificial intelligence
- Guided reading: Artificial intelligence and Scheme
- Guided reading: Artificial intelligence and theorem-proving
- Guided reading: Computer science and artificial intelligence
- Guided reading: Copyright alternatives
- Guided reading: The Linux kernel
- Guided reading: LISP
- Guided reading: Logic and set theory
- Guided reading: Scheme and computer science theory
- Independent project: Command languages and directory structures
- Independent project: Computational linguistics
- Independent project: Computer graphics
- Independent project: The C++ programming language
- Independent project: Denotational semantics
- Independent project: FORTRAN programming
- Independent project: Extended study in software design
- Independent project: Font recognition
- Independent project: Formalizations of natural languages
- Independent project: Functional programming languages
- Independent project: Logic and languages
- Independent project: Machine problem solving
- Independent project: Modal logic
- Independent project: Philosophy of mathematics
- Independent project: Recursion
- Independent project: Set theory
- Independent project: Software design and implementation
- Independent project: Syntactic theory
- Internship: Computer-aided design
- Internship: Head- and hand-position tracking in virtual environments
- Internship: Porting a window system
- Introduction to BASIC programming
- Introduction to computer science
- Programming language concepts
- Senior research project: Universal grammar
- Senior research project: Using computational analysis to extract
linguistic data and categorize texts
- Software design
- Thesis: Independent major
- Tutorial: Cryptology
- Tutorial: Free software, free
culture
- Tutorial: Outward from the middle of the
maze: selected plays of Tom Stoppard
- Tutorial: Paradoxes
Workshops
- Grinnell College Summer Computing Institute (high-school students),
1983: ``Starting out with computers,'' July 17-22, repeated July 24-29,
and ``Software tools,'' July 17-22, repeated July 24-29.
- Enrichment Institute (high-school teachers), 1984: ``Computer science,''
June 10-15.
- Exotic Programming Language Study
Group: C (fall 1984); LISP (spring 1985); bc (spring 1986); SNOBOL4
(fall 1986); VAX MACRO (spring 1987); C (fall 1987); APL (spring 1988);
TEX and Common Lisp (fall 1988); C++ (spring 1989),
Common Lisp (fall 1989); C (spring 1990); SunView (fall 1990); Icon (fall
1991); SETL2 (fall 1993); Prolog (fall 1995); Common Lisp (spring 1996);
Java (fall 1996); Icon (spring 1997); Haskell (spring 1998); ML (spring
2000); Python (fall 2000); PHP (fall 2001).
- Grinnell-Newburg Teacher Workshops (elementary- and secondary-school
teachers and administrators), 1984: ``Microcomputers,'' June 18-29, and
``Introduction to Pascal,'' June 18-29.
- Grinnell College Summer Computing Institute (high-school students),
1984: ``Computer programming with Pascal,'' July 15-August 3, ``Minds and
machines,'' July 15-20, ``Computability,'' July 22-27, and ``Transducers,''
July 29-August 3.
- Sloan Grant Summer Seminar (college faculty), 1984: ``Programming in
Pascal,'' August 6-17.
- Enrichment Institute (high-school teachers), 1985: ``Programming in
Pascal,'' June 9-14, and ``Algorithms and data structures,'' June 16-21.
- Grinnell College Summer Computing Institute (high-school students),
1985: ``Computer programming with Pascal,'' July 7-August 3, ``Resources of
a mainframe computer,'' July 7-13, repeated July 14-20, July 21-27, and
July 28-August 3, ``A short introduction to LISP,'' July 7-13, ``Artificial
intelligence,'' July 14-20, ``Assemblers and assembly languages,'' July
21-27, and ``Computability,'' July 28-August 3.
- Grinnell College Summer Computing Institute (high-school students),
1986: ``Programming with Pascal,'' July 6-19, repeated July 20-August 2,
``Assembly language programming,'' July 6-19, ``LISP and artificial
intelligence,'' July 20-August 2, and ``Problem solving with computers,''
July 20-August 2.
- Sloan Grant Summer Seminar (college faculty), 1986: ``MACSYMA,'' August
15-18.
- Grinnell College Summer Computing Institute (high-school students),
1987: ``Programming with Pascal,'' July 5-18, repeated July 19-August 1;
``LISP and artificial intelligence,'' July 19-August 1.
- Elderhostel (general public), 1988: ``Computing: Its past and future,''
June 13-17.
- Grinnell College Summer Computing Institute (high-school students),
1988: ``Programming with Pascal,'' July 12-23, repeated July 27-August 8;
``LISP and artificial intelligence,'' July 12-23.
- Sloan Grant Summer Seminar (college faculty), 1988: ``MathLAN and its
resources,'' August 17-18 (with Gene Herman).
- Faculty Writing Seminar (college faculty), July 20-24, 1992.
- ``First steps in HTML''
(college students, faculty, and staff), April 13, 1995, repeated April
19.
- ``Scheme'' (college
faculty), July 17-21, 1995.
- ``A demonstration of the World Wide
Web'' (Poweshiek Area Development), January 4, 1996.
- ``A demonstration of the World
Wide Web'' (Grinnell Computer Users' Group), January 16, 1996.
- ``Scheme'' (college
faculty), June 10-21, 1996.
- ``Government regulation and
censorship of the information superhighway'' (alumni), September 7,
1996.
- ``A demonstration of the World
Wide Web'' (Grinnell Workforce Center), October 23, 1996.
- ``Scheme for UCs''
(MathLAN user consultants), December 5, 1996.
- ``A demonstration of the World
Wide Web'' (teachers from Grinnell Middle School), January 7 and 9,
1997.
- ``Using the Internet wisely''
(Poweshiek Leadership Program), January 23, 1997.
- ``Computer models of cooperation,
retribution, and forgiveness'' (prospective students), July 18,
1997; repeated June 26, 2000, and June 30, 2001.
- ``Arcadia'' (general
audience), November 14, 1997.
- ``Why software might get
better'' (general audience), May 6, 1999.
- ``MathLAN 3'' (faculty), August 8-9, 2000.
- ``Keeping stuff: How to
preserve course papers despite technological change'' (general
audience), March 16, 2001; repeated, with revisions, April 13, 2005.
- ``TEX and
LATEX'' (faculty and
staff), June 19-21, 2002.
- ``Keeping up with the blogs: using RSS and Atom feed readers to monitor
dynamic Web sites,'' August 29, 2006.
Taught at Arizona State University (1976-1983)
Courses
- Data structures
- Empiricism
- History of modern philosophy
- Honors colloquium: Recursion
- Honors thesis: Theology and ethics
- Independent study: BASIC
- Independent study: Formal semantics
- Independent study: Symbolic logic for computer science
- Introduction to mathematical logic
- Introduction to philosophy
- Metaphysics
- Philosophical figures and movements: Russell
- Philosophy of language
- Philosophy of mind
- Principles of sound reasoning
- Reading and conference: Modal logic
- Reading and conference: Rhetoric and philosophy
- Reading and conference: Set theory
- Reading and conference: Whitehead
- Seminar: Modal and intensional logic
- Seminar: Philosophy of logic
- Seminar: Truth and universals
- Symbolic logic
created March 30, 1995
last revised July 6, 2007