CSE 341: Syllabus, Spring 2003
Department of Computer Science and Engineering,
University of Washington
Steve Tanimoto (instructor),
Jed Liu and Eric Ott (teaching
(most recently updated on 3 April 2003)
Tentative list of topics to be covered:
Overview of programming language families
History of programming languages
Interaction with Lisp
Lisp S-expressions, representation of list structure
Defining functions, recursion
Functional programming with Lisp
Lexical closures and their relation to objects
Defining macros in Lisp
Introduction to ML and its type system
Logic programming theory
Describing programming language
syntax using Backus-Naur Form and Extended Backus-Naur Form
Type systems, strong typing, type
Language design issues. Core vs libraries,
orthogonality, programming environments
Visual programming: systems and issues
Scripting languages and Perl introduction
Pattern matching in Perl using Regular Expressions
String interpolation and other features of Perl
Grading -- approximate percentages
Class participation, including
in-class exercises and meetings with the instructor: 10%.
Each of Quizzes 1 and 2: 10%.
Final Exam 20%
Late Policy for Homework
Unless otherwise noted, if an assignment is turned
in after the beginning of the class at which the assignment is due, but
within one hour of the deadline, 10% off. Between 1 hour and 1 day
late, 15% off. Between 1 day and 1 week late, 20% off. After 1 week
late, 10% per additional week late.
Policy on Collaboration
WARNING: Unless indicated otherwise in writing,
each assignment is to be done by each student individually and independently.
Students are encouraged to study together and help each other in debugging.
However, sharing a solution with another student before the assignment
is due or looking at someone else's solution and subsequently modifying
your own before the assignment is due is inappropriate. Student solutions
judged by the TA and instructor to be suspiciously similar may lead to
prosecution under the College of Engineering's policy on academic misconduct.
1. Steven Tanimoto: Symbols, Programs, Interaction: An Introduction to Common Lisp
Available at Professional Copy and Print, 4200 University Way.
The cost is approximately $15.00. (Required reading).
2. Patrick Niemeyer and Jonathan Knudsen:
Java. O'Reilly, 2000. (available at the University Bookstore --
this books is Optional. The Bookstore may mistakenly have
labelled it required.) Java will be an optional language
in this offering of CSE 341.
3. Robert W. Sebesta
A Little Book on
PerlPrentice-Hall, 2000. (required; available at the University Bookstore).
References on Common Lisp
There are a number of online resources for Common Lisp.
Here are some of them.
References on Java (Note that Java is not required in CSE 341 this quarter)
References on ML
ML is available on the instructional Unix machines
in the CSE department. We are using a version called
"sml" or Standard ML of New Jersey.
To use it on a machine such as Fiji, just type
You can download and install ML on either
a Windows PC or a Linux system.
This page for download links and installation information.
Robert Harper at Carnegie-Mellon University has posted a nice
tutorial introduction to ML. A slightly old HTML version is
here. He also has a large downloadable document with a more
Here's the book
A Gentle Introduction to ML by Andrew Cumming at Napier Univ.
I have written an ML program
that generates theorems of the propositional logic.
Here is the source file..
References on Prolog and Logic Programming
References on Visual Languages
A few VL references are here:
References on Perl
Here are a few of the many online resources
Our email list is: firstname.lastname@example.org
Course Mailing List:
The archive is here.
General References on Unix and HTML
For those of you who are new to Unix,
you might like to read the local
ACM chapter's tutorial on Unix or look at this
For HTML, you can look at web page sources
in Netscape by clicking on View and then selecting Page Source.
You can also read about HTML
For information on the Emacs text editor check
local page, which covers the Windows versions. Here's the GNU
Emacs online manual.