Administrative |
|
Schedule
|
|
Course Email |
|
Announcement Archive
|
|
Class List Archive
|
|
Assignments |
|
HW #1
|
|
HW #2
|
|
HW #3
|
|
HW #4
|
|
HW #5
|
|
HW #5 Skeleton Code
|
|
HW #6
|
|
HW #6 Code
|
|
Lecture Notes |
|
1: Introduction (1-up, 4-up, code)
|
|
2: Functions, Lists (1-up, 4-up, code)
|
|
3: Let, Option (1-up, 4-up, code)
|
|
4: Datatypes (1-up, 4-up, code)
|
|
5: Types; Patterns (1-up, 4-up, code)
|
|
6: Tail Recursion (1-up, 4-up, code)
|
|
7: Deep Patterns (1-up, 4-up, code)
|
|
8: Higher Order Funcs (1-up, 4-up, code)
|
|
9: More Functions (1-up, 4-up, code)
|
|
10: Map, Fold, Curry (1-up, 4-up, code)
|
|
11: Mutual Recursion (1-up, 4-up, code)
|
|
12: Equivalence (1-up, 4-up)
|
|
13: Type Inference (1-up, 4-up, code)
|
|
14: Objects; Modules (1-up, 4-up, code)
|
|
16: Scheme Intro (1-up, 4-up, code)
|
|
17: Let; Delayed Eval (1-up, 4-up, code)
|
|
18: Memoization (1-up, 4-up, code)
|
|
19: Streams (1-up, 4-up, code)
|
|
20: Macros (1-up, 4-up, code)
|
|
21: Continuations (1-up, 4-up, code)
|
|
22: define-struct (1-up, 4-up, code)
|
|
23: Smalltalk Intro (1-up, 4-up, code)
|
|
24: Late Binding (1-up, 4-up, code)
|
|
25: More Smalltalk (1-up, 4-up, code)
|
|
26: Design Exercise (1-up, 4-up)
|
|
27: Design Critique (1-up, 4-up)
|
|
29: Garbage Collection (1-up, 4-up)
|
|
|
Section Handouts |
|
Section 1 SML Code
|
|
Section 2 SML Code
|
|
Section 3 SML Code
|
|
Section 4 SML Code
|
|
Section 5 SML Code
|
|
Section 7 Scheme Code
|
|
Section 9 Squeak Class
|
|
Course Tools |
|
Course Dictionary
|
|
Unix and Emacs Guide
|
|
Emacs Hints
|
| SML |
|
SML REPL FAQ
|
|
SML on Your Own
|
| Scheme |
|
Dr. Scheme
|
|
R5RS (the Standard)
|
| Smalltalk and Squeak |
|
www.squeak.org
|
|
www.smalltalk.org
|
|
Keyboard shortcuts
|
|
Getting started
|
|
341 Overview
|
|
Reading Smalltalk
|
|
Squeak Language Reference
|
|
IBM Tutorial
|
|
|
|
|
Course Email:
- cse341-announce Used by the course staff for
important announcements. You must
subscribe to this.
- cse341@cs.washington.edu:
Please feel free to use this list to ask and/or answer
questions, give tips, etc., about homework, lectures, the
computing environment, whatever.
Subscribe
or read the
mail archive
regularly.
- Use
cse341-instr to send private mail to the
instructor and TAs. (Many questions are better sent to
cse341.)
Catalog Description:
Basic concepts of programming languages, including
abstraction mechanisms, types, and scoping. Detailed
study of several different programming paradigms, such
as functional, object-oriented, and logic programming.
No credit if CSE 413 has been taken.
Prerequisite:
CSE 143.
Credits: 4
Grading: Homework, Midterm, Final. Homework mainly will be
programing.
Overall weights very roughly: HW 55%, midterm
15%, final 30%.
Late Policy: Papers and/or electronic turnins due at
noon on the due date. Baring major
emergencies, the deadline is strict. Electronic turnins will be
disabled at noon, promptly. However, you may have 3 "late
days", total, spread over all assignments. (In 24-hour chunks,
i.e., a turnin at 12: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.)
Extra Credit: 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.
Collaboration: 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.
Textbooks:
ML: (Required) Jeffrey D. Ullman.
Elements of ML
Programming, ML 97 Edition. 1998.
Errata.
Scheme: There is no text for the Scheme portion of
the course; online resources including the Help tools packaged with Dr. Scheme (the recommended software environment) and/or the following will suffice. If you find other good online resources, please email a link to the class list.
Smalltalk/Squeak: (Recommended) Mark Guzdial. Squeak:
Object-Oriented Design with Multimedia Applications. 2001.
Errata. We will
cover material corresponding to less than two chapters
(specifics here), so online resources
may suffice for you, but if you prefer to have a book in hand,
this is a good one.
Several good online resources are linked under Course Tools,
to your left. Bear in mind that several of those links describe
Smalltalk, which is the language used within Squeak. Squeak
differs from Smalltalk in things like how to define methods and
classes, so you should ignore some of the Smalltalk details.
Portions of the CSE 341 Web may be reprinted or adapted for academic
nonprofit purposes, providing the source is accurately quoted and duly
credited. The CSE 341 Web: © 1993-2005, Department of Computer Science
and Engineering, University of Washington.
|