|
CSE Home | About Us | Search | Contact Info |
Syllabus
Academic-Integrity Policy
Challenge-Problem Policy
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.
Dropbox
for homework
Gradebook
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
slides
code
sp08summary
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)
user's guide
standard-library
documentation
tutorials,
books,
and documentation
Scheme resources:
R5RS (the
standard)
How to Design Programs
Structure and Interpretation
of
Computer Programs
Programming Languages: Application and Interpretation
Ruby resources:
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)
Ruby
Homework 0, "due" March 31, 11:00PM (worth
0 points)
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 Box 352350 Seattle, WA 98195-2350 (206) 543-1695 voice, (206) 543-2969 FAX [comments to perkins] |