CSE 341 Administrivia & Useful Information


Instructor: Hal Perkins, perkins@cs.washington.edu, 206-543-4784.  Office Hours: Seig 210:  TBA, plus whenever the door is open.

Teaching Assistant: Jason Hartline, hartline@cs.washington.edu .  Office Hours: Seig 226A: Thurs. 10:45-12:00, Fri. 11:30-12:20, or by appointment.

Class Meetings

Lectures, MWF 10:30-11:20, EE1 037 (New building)

Quiz AA, Th 8:30-9:20, EE1 026
Quiz AB, Th 9:30-10:20, EE1 026

(Note that this is a 4 credit course, with just 1 quiz section meeting per week. Earlier versions of the time schedule had it listed incorrectly as 5 credits with 2 quiz section meetings per week. Check with the staff advisor if you have some problem with your schedule due to the change to 4 credits.)


Our objective is to learn fundamental programming language concepts. We approach this by acquiring practical experience with a set of four very different programming languages -- Scheme, Java, Miranda, and CLP(R). There will be an emphasis on object-oriented languages, and we'll have one or two lectures on Smalltalk in addition to the Java lectures (although no programming assignment for Smalltalk). Following the study of the individual languages, we'll finish up by a comparative discussion of programming language concepts in these and other languages.

Prerequisite: CSE 143


The only required book is:

The following books are recommended references for the other languages. However, there are a set of books on reserve in the Engineering Library, and if you're short of money you can get away without buying them. We'll also have handouts and online reference material for the languages.

Computing Resources

We will use orcas for Miranda, Scheme and CLP(R). Any X Terminal, or PC with an X server, or just a vanilla telnet, can connect you to orcas.

You can use whatever version of Java you would like (see the Java pages for more details).

Assignments and Grading

There will be one or more small assignments and a major programming assignment for each language, as well as some written homework. There will be a midterm covering Scheme, Java, and a bit of Smalltalk, and a comprehensive final at the end of the quarter.

Here is the grading structure (possibly subject to modification):

homework 50%
midterm 20%
final 30%

Individual grades may vary slightly, based on effort, contribution to class and section, etc. This grading structure is subject to change.

If you discover an error in the grading of an assignment or test question, please bring it to the TA or instructor's attention within one week after the material is first returned.


Students are expected to do the assignments on their own, except for assignments explicitly labelled as group assignments. Any cases of cheating that we discover will be sent to the College disciplinary committee.

However, we also want to be clear on what is legitimate collaboration -- please help each other out in this class in appropriate ways! It is OK to help other students debug their programs, and to discuss general approaches to solving problems. After having such a discussion, though, you should go do something else for at least half an hour, for example watch an inane TV show, before independently working on your solution. (This is sometimes called the Gilligan's Island rule.) However, it is not OK to copy someone else's code or homework solution.

Exams must of course be done on your own. Both the midterm and final will be open book and open notes.

Late Assignments and Incompletes

Assignments are due in lecture on Monday (unless otherwise specified). If you write answers out by hand, please make sure it's legible. Do not write program code by hand. Write your name and quiz section time on the assignment. Late assignments will be marked down as follows:

25% off -- up to 1 day late
50% off -- up to 2 days late
75% off -- up to 3 days late

"25% off" means that 25% of the maximum possible score is taken off of the score for the late assignment. "Up to 1 day late" means up to the time of lecture on the day following the day the assignment was due, and so forth. For example, if the assignment is due on a Monday, "up to one day late" means until 10:30 am on Tuesday, "up to 2 days late" means until before lecture on Wednesday, and "up to 3 days late" means until 10:30 am on Wednesday. Send e-mail to the TA du jour if you want to turn in a homework late to arrange to get it to him. (Sorry to sound so picky about this -- but there have been problems with very creative interpretations of the rules in the past.)

Exceptions will be made only for circumstances truly beyond your control, such as a serious illness or family emergency.  Please get in touch with the instructor to discuss the circumstances if this happens.

Incompletes are never given never simply because assignments were not completed on time.