|CSE Home||About Us||Search||Contact Info|
Lectures: MWF 12:30-1:20, EEB 045
Sections: Th, 12:30-1:20 or 1:30-2:20, MGH 234.
Class discussion board
Class email list archives
Instructor: Hal Perkins; perkins(at)cs; CSE 548; office hours Mon. 3:40-4:30
+ appointments + any other time when not busy.
TA: Emily Fortuna, fortuna(at)cs; office hours: Wed. 1:30-2:30, CSE 218.
TA: Cody Schroeder, codys(at)cs; office hours: Thur. 2:30-4:00 & Fri. 1:30-3:00, CSE 218.
Homework 1, due Thursday 7 April, 11:00 PM
Homework 2, due Thursday 14 April, 11:00 PM provided code
Homework 3, due Sunday 24 April, 11:00 PM provided code
Homework 4, due Thursday 5 May, 11:00 PM provided code
Sample images: George Martha Guy Curry
Homework 5, due Tuesday 17 May, 11:00 PM provided code
Homework 6, due Thursday 26 May, 11:00 PM
Homework 7, due Saturday 4 June, 11:00 PM. No late assignments accepted after this deadline, even if you have late days remaining.
starter code executable demo (warning: large 12MB jar file; run with java -jar Adventure.jar)
This quarter's final: exam sample solution
Sample finals: sp08 unsolved sp08 solved Wi08 unsolved Wi08 solved
(Note: The second half of sp04 and au04 covered substantially different material than this quarter, so those exams are not linked here.)
This quarter's midterm: exam sample solution
Sample midterms: Sp08 unsolved Sp08 solved Wi08 unsolved Wi08 solved Au04 unsolved Au04 solved Sp04 unsolved Sp04 solved
Slides will usually be posted no later than the night before class. Sample code and other materials may not be posted until after the corresponding lecture.
The "sp08summary" links are to Dan Grossman's essays describing the corresponding lectures during that quarter. While we can't guarantee to cover exactly the same things at the same pace or in the same order, these notes should be a very useful resource.
1. Mar 28: Course mechanics, ML variable bindings
2. Mar 30: Functions, pairs, lists slides code sp08summary
3. Apr 1: Lack of mutation, let bindings, options slides code sp08summary
4. Apr 4: Each-of vs. one-of types, records, datatypes, case expressions slides code sp08summary
5. Apr 6: Pattern matching, one-argument functions; tail recursion, accumulators slides code sp08summary
6. Apr 8: Deep pattern-matching, course motivation slides code sp08summary
7. Apr 11: Functions taking/returning functions slides code sp08summary
8. Apr 13: Function closures slides code additional code from lecture sp08summary
9. Apr 15: Function-closure idioms slides code sp08summary
10. Apr 18: Higher-Order Functions Wrapup; Type inference; Namespace management slides code sp08summary
11. Apr 20: Modules; Abstract Types slides code sp08summary
12. Apr 22: Parametric polymorphism; Equivalence slides sp08summary
13. Apr 25: Introduction to Scheme slides code summary
X. Apr 26: Midterm review, EE 045, 4:30 pm
X. Apr 27: Midterm
14. Apr 29: Thunks, Streams, Memoization slides code summary
15. May 2: Macros slides code summary
16. May 4: Define-struct; implementing higher-order functions slides code summary
17. May 6: Static vs. dynamic typing slides summary
18. May 9: DrScheme modules; abstraction with dynamic types; function equvalences slides code summary
19. May 11: Introduction to Ruby slides code summary lecture demo transcript
20. May 13: Duck Typing; Blocks, Procs, and Iterators; Inheritance and Overriding slides code summary
21. May 16: Late-binding: OO's essence, as a Scheme pattern slides code summary
22. May 18: Multiple Inheritance, Interfaces, Mixins slides code summary
23. May 20: Static typing for objects; OO subtyping slides summary
24. May 23: Named types; Parametric polymorphism vs. subtyping; bounded polymorphism slides code summary
25. May 25: OO vs. functional extensibility slides ML Java summary
26. May 27: Garbage collection slides
X. May 30: University Holiday
27. Jun 1: A bit of history slides hopl proceedings 50 in 50
28. Jun 3: Wrap-up slides
X. Jun 8 (Wed.): Review session, EE 037, 4:30 pm.
X. Jun 9 (Thur.): Final exam, 8:30 am.
1. Mar 31: Lists, pairs, etc.
2. Apr 7: Type synonyms, type variables, equality types, exceptions code
3. Apr 14: First class functions, more tail recursion, fold code
4. Apr 21: Modules, mutual recursion, partial function application code
5. Apr 28: Scheme, forms of let, cond, more... code
6. May 5: eval/apply, define-struct, MUPL, practice problems, macros on ASTs code
7. May 12: Homework 5, MUPL, etc. code
8. May 19: Ruby arrays, hashes, blocks, iterators, etc. code
9. May 26: Adventure game (hw7), more Ruby
10. June 2: Course evals, hw7, StatePattern slides
"Required": Jeffrey D. Ullman.
Elements of ML
Programming, ML'97 Edition. 1998.
Check the errata page to avoid bugs.
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.
"Optional": R. Kent Dybvig, The
Scheme Programming Language, 4th ed. 2009.
For those who want a more tutorial introduction to Scheme.
"Optional": Dave Thomas. Programming with Ruby. 2005.
Check the errata page to avoid bugs.
Overlap with the course material is very roughly chapters 1-9 (or chapters 1-8 of the first edition), but not ranges, regular expressions, and several other small topics. We will stick with Ruby 1.8, which is installed in the CSE labs and is the main version distributed with Linux and OS X. Either the Ruby 1.8 or 1.9 versions of the book will work fine, however.
SML resources (none of which should be necessary):
www.smlnj.org (links to many things, including the next three resources)
tutorials, books, and documentation
R5RS (the standard)
How to Design Programs
Structure and Interpretation of Computer Programs
Programming Languages: Application and Interpretation
List compiled by Stuart Reges for Spring 2010's CSE341
The CSE undergraduate labs have all the software you need for the
course. If you would like to install software on your own computers,
these links may help you. They contain more knowledge than the course
staff has, so our ability to help further is limited.
New!! Installing SML/NJ and Emacs on your own machine (and getting Emacs sml mode to work on your lab account)
emacs for Windows FAQ
SML NJ (use version 110.72)
Racket (the successor to DrScheme)
Homework 0, "due" March 31, 11:00PM (worth
Getting started with Linux and emacs (very old - ignore obsolete things; we'll try to update when time is available)
Guidelines for using ML in emacs
Computer Science & Engineering|
University of Washington
Seattle, WA 98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to perkins]