CSE 341 - Programming Languages - Autumn 2006


Logistics and Contact Information

See the course homepage for information regarding teaching assistants, office hours, sections, etc. You should join the class email list and check email at least once every 24 hours.


Successful course participants will:


The recommended text is: 

We will cover only material corresponding to the first two chapters and online resources may suffice. You must decide how much you benefit from having a book in your hand. There is no text for the Scheme  or Miranda portions of the course; online resources will suffice.  There are also a set of texts on reserve in the Engineering Library that you may want to use


There will be a midterm and a (comprehensive) final exam, both open book and notes.  The midterm will be in class Wednesday Nov 1.  The final will be Thursday Dec 14, 8:30-10:20am, in the usual classroom.  If you are ill or there is some other major emergency, contact the instructor by email or phone before the midterm or final.  You can leave a voicemail message (206-543-6678).

If you want to take a practice exam, exams and solutions for previous quarters are posted on the web pages for those offerings.

Late Policy

Electronic turnins will be due at 10pm on the due date. If we have any written (paper) assignments, these will be due at the beginning of your quiz section.  Baring major emergencies, these deadlines are strict.  Electronic turnins will be disabled at 10pm, promptly. However, you have 6 "late days" to use, total, spread over all assignments.  (In 24-hour chunks, i.e., a turnin at 10:01PM uses 1 of your 6 days. I'd suggest you hoard them in case you really get stuck late in the quarter.  After the normal electronic turnin shuts off, email your late solution to instructor; cc the TAs.)

(Note that we've increased the number of late days to 6!)


We'll usually have a warmup assignment and a larger assignment for each language.  The larger assignments will count for more than the warmups.  Each homework will have a total number of possible points on it -- the 55% of the grade will be allocated proportionately. 

Collaboration and Academic Integrity

Homeworks are all individual, not group, exercises.  Discussing the course material, including homework problems, is fine, but you must produce your own homework solutions.  I expect you to follow the "Gilligan's Island Rule": if you discuss the assignment with someone else, don't keep any notes (paper or electronic) from the discussion, then go watch 30+ minutes of mind-numbing TV (Gilligan's Island reruns especially recommended) before you continue work on the homework by yourself.  If in any doubt about whether your activities cross allowable boundaries, tell us before, not after, you turn in your assignment.  I hope there will be no cheating cases in the class - however, if cheating is found, it will be turned over to the University Committee on Academic Conduct.


 In every course, there is a danger that you will not learn much and therefore lose the most important reason to take the course. In 341, this danger is severe because it is easy to get distracted by unfamiliar surroundings and never focus on the concepts you need to learn. These surroundings include new syntax, programming environments, error messages, etc. Becoming comfortable with them and appreciating their importance is only one aspect of this course, so you must get past it. When we move to a new language, you must spend time on your own getting comfortable in the new setting as quickly as possible so you do not start ignoring the course material.

If you approach the course by saying, "I will have fun learning to think in new ways" then you will do well. If you instead say, "I will try to fit everything I see into the way I already look at programming"  then you will get frustrated.

Finally, in learning new languages it's really useful to experiment. For example, if you're unsure how some new construct works, write a small sample program and see!