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:


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)