Syllabus
Academic-Integrity Policy
Challenge-Problem Policy
Course Email List (mandatory)
Give
Anonymous Feedback
Instructor: Dan
Grossman,
,
Allen Center 556
Office hours: Monday 10:30-11:30,
Tuesday 2:00-3:00, and by appointment, Allen Center Room 556
TA: Matthew Kehrt, (first initial + last name) {at} cs.washington.edu
Office hours: Wednesday 1:00-2:00, Friday 2:00-3:00,
Allen Center Room 220
TA: Jeff Prouty, (first initial + last name) {at} cs.washington.edu, AIM:
CSEJeff,
Office hours: Tuesday 12:00-1:00, Thursday 12:30-1:30,
Allen Center Room 002 (basement lab)
Turn-in page
Homework 1, due Thursday 10 April, 8:00AM
Homework 2, due Friday 18 April, 8:00AM
provided code
Homework 3, due Monday 28 April, 8:00AM
provided code
Homework 4, due Friday 9 May, 8:00AM
provided code
Sample images:
Dan
Matthew
Jeff
George
Martha
Guy
Curry
Homework 5, due Tuesday 20 May, 8:00AM
provided code
Homework 6, due Wednesday 28 May, 8:00AM
provided code
example output
Homework 7, due Friday 6 June, 8:00AM
example output
Our final:
unsolved
solved
Sample final:
Wi08 unsolved
Wi08 solved
Our midterm:
unsolved
solved
Sample midterms:
Wi08 unsolved
Wi08 solved
Fa04 unsolved
Fa04 solved
Sp04 unsolved
Sp04 solved
1. Mar 31: Course mechanics, ML variable bindings
slides
code
summary
2. Apr 2: Functions, pairs, lists
slides
code
summary
3. Apr 4: Lack of mutation, let bindings, options
slides
code
summary
4. Apr 7: Each-of vs. one-of types, records, datatypes, case expressions
slides
code
summary
5. Apr 9: Pattern matching, one-argument functions; tail recursion,
accumulators
slides
code
summary
Tail recursion got moved to Friday
6. Apr 11: Deep pattern-matching, course motivation
slides
code
summary
links
Course motivation got moved to Monday
7. Apr 14: Functions taking/returning functions
slides
code
summary
8. Apr 16: Function closures
slides
code
summary
9. Apr 18: Function-closure idioms
slides
code
summary
10. Apr 21: Higher-Order Functions Wrapup; Type inference; Namespace
management
slides
code
summary
Namespace management got moved to Wednesday
11. Apr 23: Modules; Abstract Types
slides
code
summary
12. Apr 25: Parametric polymorphism; Equivalence
slides
summary
13. Apr 28: Introduction to Scheme
slides
code
summary
X. Apr 30: Midterm
14. May 2: Thunks, Streams, Memoization
slides
code
summary
Memoization got moved to Monday
15. May 5: Macros
slides
code
summary
16. May 7: Quoting, eval, apply
notes
code
mini-exercises
17. May 9: Define-struct; implementing higher-order functions
slides
code
summary
18. May 12: Static vs. dynamic typing
slides
summary
19. May 14: DrScheme modules; abstraction with dynamic types;
function equvalences
slides
code
summary
20. May 16: Introduction to Ruby
slides
code
summary
21. May 19: Duck Typing; Blocks, Procs, and Iterators; Inheritance and
Overriding
slides
code
summary
22. May 21: Late-binding: OO's essence, as a Scheme pattern
slides
code
summary
23. May 23: Multiple Inheritance, Interfaces, Mixins
slides
code
summary
X. May 26: University Holiday
24. May 28: Static typing for objects; OO subtyping
slides
summary
25. May 30: Named types; Parametric polymorphism vs. subtyping;
bounded polymorphism
slides
code
summary
26. Jun 2: OO vs. functional extensibility
slides
ML
Java
summary
27. Jun 4: Garbage collection
slides
28. Jun 6: Wrap-up
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": 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.
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
(with links to the DrScheme web page)
Structure and Interpretation
of
Computer Programs
Programming Languages: Application and Interpretation
Ruby resources:
List
compiled by Stuart Reges for Fall 2007'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.
emacs for Windows
SML NJ (use version 110.65)
DrScheme
Ruby
Lecture: MWF 9:30-10:20, building EEB room 037
Section AA: Th 8:30-9:20, building MGH, room 248
Section AB: Th 9:30-10:20, building MEB, room 242
Final Exam: Wednesday June 11, 8:30-10:20, building EEB room 037
Homework 0, "due" April 3, 8:00AM (worth
0 points)
Getting started with Linux and emacs
Guidelines for using ML in emacs