Classes (current & former)
CS 348: Programming Languages
To be filled in at a later date ... (see main page for now)
CS 241: Data Structures (and Algorithms)
Second course in the introductory sequence for Computer Science
majors at Willamette. As a second course in programming, it deepens
and enriches a student's understanding of the basic processes involved in
computing. But it also begins to focus on deeper and more abiding issues
such as evaluating design strategies and implementation effectiveness.
Old version of CS 241: Data Structures
CS 231: Introduction to Programming
An introductory course in computers and programming.
This semester (Fall 1998) I plan to teach
a broader set of topics, including the following:
I also plan to help students better prepare for later coursework
and "para-curricular" education by starting them off in a Unix
programming environment in our reinvigorated Departmental lab
(running Red Hat Linux on Intel architecture).
- some history (of computing) and philosophy (nature of language
and information, role of symbols, etc.);
- issues in data representation (number systems, algebra
of logarithms and exponents, digital representation of various
kinds of information);
- computer organization and low-level programming (including
simple architecture and assembly language programming, the
latter using a simulator for a simplified machine, the PC-231);
- and finally, the traditional core topic for this course,
higher-level programming using the Java langauge. This will
constitute the bulk of the course (about 2/3).
CS 446: Automata Theory
An upper-level course on the theory of computation. Despite the course
title (which is traditional at Willamette), we actually consider
computation from the perspectives of both abstract machines (automata)
and language formalisms (the Chomsky hierarchy).
CS 451: Topics in Computer Science
An upper-level course on functional programming taught (bi-lingually)
in Scheme and Haskell. Lecture notes and labs can be viewed on-line
with a browser. HtX software (see
the Oberlin HtX homepage) is used to generate the notes automatically
from a simple outline format.
CS 130: Computing Concepts
An introductory course for non-major liberal arts students which stresses
the conceptual under-pinnings of computation. Course topics include history
of computing, introduction to hardware architecture, digital data
representation, networks, Web page construction, and Java programming.
I'm still putting the homepage together for this course, but you can
view on-line lecture notes on
hardware architecture and
Oberlin College CS 275/280 [the DRAGN Project]
Before coming to Willamette, I worked at Oberlin College for three years in
an NSF-funded visiting position. Rhys Price Jones, Rich Salter and I
taught an innovative sophomore curriculum, developed associated web-based
course materials and also the software we used to produce them (HtX).