CSE 341: Programming Languages
Autumn Quarter, 1994, University of Washington
Instructor:
Steve Tanimoto, (office hours:
Wednesday 2:00-3:00;
Friday 10:30-11:30, Sieg Hall 312),
electronic mail: tanimoto@cs.washington.edu.
Teaching Assistant:
Greg Linden, (office hours:
Thursdays 1:45-2:45pm at the Burke Museum Cafe on campus. [Note
the shift by 15 minutes]
Additional OH by appt.)
electronic mail: glinden@cs.
A newsgroup has been set up for the course:
(uw-cs.courses.cse341). Students are encouraged to
read it regularly.
Rationale:
Programming Languages provide the
primary means for giving computers detailed instructions
for carrying out algorithms, handling user actions,
generating graphics on the screen, etc. In additional to
the well-known imperative paradigm, there are alternative
paradigms and languages that support them. For example,
functional programming is supported by Lisp, object-oriented
programming is supported by CLOS and Smalltalk, visual programming
is supported by Agentsheets,
and logic programming is supported by Prolog,
This course provides an introduction to these alternative
paradigms through lectures, readings, and small assignments,
and it provides an
opportunity to work with them in depth through a
term projects.
Lecture Times:
Mon.-Wed.-Fri.
12:30-1:20.
Places:
Every Monday and Wednesday the class meets
in Sieg 323. Every Friday unless otherwise
noted, the class meets in the MSCC Macintosh Laboratory
(in the basement of Thompson Hall).
Hardware Platform and Software:
The Apple Macintosh will be used for all or almost all programming in
the course. The Macintosh supports high quality implementations
of Common Lisp and Smalltalk. In addition, we will be using the
graphical and interactive features of Macintosh Common Lisp, which
are intimately tied to the Macintosh Toolbox. We will also take
advantage of the availability of Mathematica for a very brief
introduction near the end of the quarter.
Due to the nature of the software licenses held by the Mathematical
Sciences Computing Center, neither Macintosh Common Lisp,
Objectworks Smalltalk, nor Mathematica can be reinstalled on
non-MSCC-lab machines. Of course, however, any student has the option of
buying the software on her/his own, but these packages are relatively
expensive.
Time Commitment:
This course is a 5-credit one
and, following the custom, it assumes an average of
15 hours/week of student effort.
This is only a general guideline; some weeks
may require less or more time. Also, some students will need to spend less
time while others will need to spend more time.
\newpage
Grading:
-
- Assignments 1 and 2: 10%
- Assignments 3 and 4: 20%
- Assignments 5 and 6: 10%
- Midterm examination 1: 10%
- Midterm examination 2: 10%
- Term Project: 40%
Reading Material:
There is no single text that perfectly matches this course.
In the past, students were sometimes required to purchase three
expensive texts (one for each of three programming languages)
at a total cost of over $100.
This quarter, there are only two required purchases:
the relatively inexpensive (less than $30) text by
Bal and Grune ( Programming Language Essentials) covering
basic principles of lots of languages, plus a set of
course notes (available at the copy center)
written by the instructor which cover
Lisp, Prolog, and part of visual languages. For Smalltalk,
students will have the option of purchasing a copy of the
4.1 user's guide at the copy center. A few of the
readings are in an optional book (On Lisp, by Graham)
which covers advanced
features of Lisp. In order to keep average expenditures
down, students are encouraged to share the optional
reading materials.
Several papers related to visual languages and other topics
will be made available at the copy center
later during the quarter.
Some of our reading material is online.
Tentative Schedule:
See Detailed Schedule
Lecture materials (text of overheads used in class):
See Text of Lectures
Section materials (Notes from Greg Linden's section meetings):
See section meeting notes
Term Projects:
The purposes of the
term projects
are the following:
to give students an opportunity
to explore various aspects of programming languages in depth,
to develop students' ability to work well in teams,
to enable creativity and self-starting initiative,
and to permit some fascinating and exciting projects to be completed.
Aside from the advantage of knowing how to work as part of a team,
by pairing up, the team can go farther and create a more powerful
and polished project than an individual would be able to do.
A good team works to help each member overcome obstacles and get
out of dead ends.
Lots of ideas for the term projects are likely to come up during the
period October 24 to November 4 as the class discusses a variety of
visual programming systems and as students complete their interactive
drawing programs (Assignment 4). Some specific suggestions for
topics will be made around that time. All topics need to be cleared
with the instructor during the week of November 7.
Note that there is no final examination scheduled for the course.
This is intended to permit each team to put extra effort into
polishing its project and turning in an attractive, thoughtful,
and thorough report.
tanimoto@cs.washington.edu (Last Update: 11/2/94)