CSE341: Programming Languages (original) (raw)

Spring 2008

Course Information

Course Staff

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)

Homework

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:00AMexample output

Exams

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

Class Materials

1. Mar 31: Course mechanics, ML variable bindingsslides code summary
2. Apr 2: Functions, pairs, listsslides code summary
3. Apr 4: Lack of mutation, let bindings, optionsslides code summary
4. Apr 7: Each-of vs. one-of types, records, datatypes, case expressionsslides code summary
5. Apr 9: Pattern matching, one-argument functions; tail recursion, accumulatorsslides code summary
Tail recursion got moved to Friday
6. Apr 11: Deep pattern-matching, course motivationslides code summary links
Course motivation got moved to Monday
7. Apr 14: Functions taking/returning functionsslides code summary
8. Apr 16: Function closuresslides code summary
9. Apr 18: Function-closure idiomsslides code summary
10. Apr 21: Higher-Order Functions Wrapup; Type inference; Namespace managementslides code summary
Namespace management got moved to Wednesday
11. Apr 23: Modules; Abstract Typesslides code summary
12. Apr 25: Parametric polymorphism; Equivalenceslides summary
13. Apr 28: Introduction to Schemeslides code summary
X. Apr 30: Midterm
14. May 2: Thunks, Streams, Memoizationslides code summary
Memoization got moved to Monday
15. May 5: Macrosslides code summary
16. May 7: Quoting, eval, applynotes code mini-exercises
17. May 9: Define-struct; implementing higher-order functions slides code summary
18. May 12: Static vs. dynamic typingslides summary
19. May 14: DrScheme modules; abstraction with dynamic types; function equvalencesslides code summary
20. May 16: Introduction to Rubyslides code summary
21. May 19: Duck Typing; Blocks, Procs, and Iterators; Inheritance and Overridingslides code summary
22. May 21: Late-binding: OO's essence, as a Scheme patternslides 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 subtypingslides summary
25. May 30: Named types; Parametric polymorphism vs. subtyping; bounded polymorphismslides code summary
26. Jun 2: OO vs. functional extensibilityslides ML Java summary
27. Jun 4: Garbage collectionslides
28. Jun 6: Wrap-upslides

Section Materials

1. Apr 3: Lists, pairs, andalso, orelse, shadowingcode
2. Apr 10: Type synonyms, type variables, equality types, exceptionscode
3. Apr 17: First class functions, more tail recursion, foldcode
4. Apr 24: Modules, mutual recursioncode
5. May 1: Scheme, forms of let, cond, the truth behind cons, assoccode
6. May 8: define-struct, defining and evaluating abstract syntax trees, macros on ASTscode
7. May 15: Homework 5, let/cccode
8. May 22: Arrays, hashes, exploratory programmingcode
9. May 29: Subtyping for objectscode
10. June 5: Review for final exam

Textbooks and Online Resources

"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

Software

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

Meetings

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

Preliminaries

Homework 0, "due" April 3, 8:00AM (worth 0 points)
Getting started with Linux and emacs
Guidelines for using ML in emacs