CSE 341: Programming Languages

Autumn 2005

General Information

Follow the link to add your name to the course mailing list.  We'll use it to post announcements, and students in the class are welcome to use it for discussion about the topics as well.


Lecture: MWF 12:30-1:20, MGH 231
Section AA: Th 8:30-9:20, EE1 042
Section AB: Th 9:30-10:20, EE1 042


Some assignments will include "extra credit" sections. These will enrich your understanding of the material, but deliberately will provide scant credit in proportion to the work required. Do them for the glory, not the points, and don't even think about starting the extra credit portion until the main problems are complete.

Schedule and Class Materials

Section Materials


There will be a midterm and a (comprehensive) final exam, both open book and notes.  The midterm will be in class Wednesday Nov 2.  The final will be Thursday Dec 15, 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.

Optional review session for final exam: Dec 14, 3:30pm, Allen Center 303.

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 3 "late days" to use, total, spread over all assignments.  (In 24-hour chunks, i.e., a turnin at 10:01PM uses 1 of your 3 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.)

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.


Instructor: Alan Borning
TA: Jonah Cohen
TA: Chester Chan

Office Hours

Alan Borning: Tues Fri 2:30-3:20 or by appointment (Allen Center 644)
Jonah Cohen: Wed 3:00-3:50 (Allen Center 220)
Chester Chan: Mon 1:30-2:20 Thurs 3:30-4:20 (Allen Center 002)

Textbooks and Online Resources

"Required": Jeffrey D. Ullman. Elements of ML Programming, ML'97 Edition. 1998.
Assuming you do not want to suffer from bugs in the textbook, check the errata page.
Approximately: Chapters 2, 3.1-3.4, 5.1-5.5 (skip 5.2.5, 5.3.4, 5.4.4), 6.1-6.2, 7.1, 8.2, 8.5.5 overlap with the course material.

"Recommended": Mark Guzdial. Squeak: Object-Oriented Design with Multimedia Applications. 2001.
As with the above, check the errata page.
Approximately: Chapters 2, 3.1, and 3.2 overlap with the course material.

Course Dictionary

SML resources:
tutorials, books, and documentation
user's guide

Scheme resources:
R5RS (the standard)
Programming Languages: Application and Interpretation
How to Design Programs (with links to the DrScheme web page)
Structure and Interpretation of Computer Programs

Smalltalk resources:
Keyboard shortcuts reference
Keunwoo Lee's Getting started in Squeak slides
John Maloney's Bank Account tutorial (another good place to start)
Common 341 Squeak Overview
Jim Sawyer's "Reading Smalltalk"
The IBM Smalltalk Tutorial


Getting started with UNIX and emacs
Guidelines for using ML in emacs

The CSE undergraduate labs have all the software you need for the course. If you would like to install any of the languages on your own computer these links may help you:

emacs for Windows
SML NJ (the instructional machines have version 110.54, but other recent versions should be ok)