CSE341, Fall 2004 (original) (raw)
CSE 341: Programming Languages
Course Information
Syllabus
Academic-Integrity Policy
Extra-Credit Policy
Other
Our Midterm with solutions
Old Midterm (without solutions) (with solutions)
Our Final with solutions
Old Final (without solutions) (with solutions)
anonymous feedback
Homework
Homework 1, Due Friday 8 October, 9:00AMsample solution
Homework 2, Due Monday 18 October, 9:00AMsample solution
Homework 3, Due Friday 29 October, 9:00AMsample solution
Homework 4 <hw4support.scm>, Due Wednesday 10 November, 9:00AMsample solution
Homework 5 <hw5skeleton.scm>, Due Friday 19 November, 9:00AM sample solution
Homework 6 <hw6.text>, Due Tuesday 30 November, 9:00AMsample solution
Homework 7, Due Friday 10 December, 9:00AMsample solution
Course Dictionary
Class Materials (materials for future meetings subject to change)
- Sep 29: Introduction to 341 and SMLslides code
- Oct 1: Functions, pairs, and listsslides code
- Oct 4: Let bindings, options, and benefits of no mutationslides code
- Oct 6: "One-of" types and user-defined typesslides code
- Oct 8: More pattern-matching, accumulators, tail recursionslides code
- Oct 11: Deep patterns, pattern-bindings, course motivationslides code
- Oct 13: Course motivation, BNF, functions taking functionsslides code
- Oct 15: Function closuresslides (no .sml file)
- Oct 18: Closures for ADTs, callbacks, and curryingslides code
- Oct 20: Mutual Recursion, Equivalence and Syntactic Sugarslides code
- Oct 22: Type inference and parametric polymorphismslides (no .sml file)
- Oct 25: Modules and abstract typesslides code
- Oct 28: Scheme intro and binding formsslides code
- Nov 3: Thunks, Streams, and Memoization slides code
- Nov 5: Macrosslides code
- Nov 8: define-struct, exceptions via let/ccslides code
- Nov 10: varargs/apply, implementing higher-order functions and exceptionsslides (no code)
- Nov 12: Continuation-passing idiom, static vs. dynamic typingslides code
- Nov 15: MzScheme Modularity, abstraction with dynamic typesslides code
- Nov 17: Introduction to Smalltalkslides Workspace contents
- Nov 19: Smalltalk objects, classes, and inheritancefile out
- Nov 22: Late-binding: the essence of OO and as a Scheme patternslides Scheme code
- Nov 24: Advanced OO topicsslides Workspace contents
- Nov 29: Multimethods, static typing for objectsslides
- Dec 1: OO subtyping, named types, class vs. types (see also last lecture's slides)slides
- Dec 3: Polymorphism: overloading, subtyping, parametric, and bounded quantificationslides Java ML
- Dec 6: OO vs. functional extensibilityslides Java ML
- Dec 8: Garbage collection slides
- Dec 10: Some Java idioms and "everything we didn't do"slides
Section Materials
- Sep 30: Intro ML examples, non-recursive functions ex1.sml ex2.sml ex3.sml funcs.sml
- Oct 7: Practice with patterns ex1.sml
- Oct 14: Exceptions, returning functions exceptions.sml funcs.sml
- Oct 21: HW3 practice/examples ex1.sml
- Oct 28: Modules, Signatures, Abstract Types ex1.sml
- Nov 4: Begin, mutation, improper lists in Scheme ex1.scm
Staff
Instructor:Dan Grossman, (careful: the userid equal to the instructor's last name belongs to a different person), Allen Center 556
TA: David Richardson, daverich@cs.washington.edu
TA: Brian Koropoff, brianhk at cs.washington.edu
Office Hours
Grossman: Monday 3:30-4:30, Friday 1:30-2:30, and by appointment (CSE556)
Richardson: Tuesday 12:30-1:30, Thursday 10:30-11:30, and by appointment (CSE430)
Koropoff: Monday 11:30-12:25, Wednesday 11:30-12:25, and by appointment (CSE undergrad lab)
Textbooks and Online Resources
"Required": Jeffrey D. Ullman. Elements of ML Programming, ML'97 Edition. 1998.
Assuming you do not want to suffer from bugs in the textbook, check the errata page.
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.
"Recommended": Mark Guzdial. Squeak: Object-Oriented Design with Multimedia Applications. 2001.
As with the above, check the errata page.
Approximately: Chapters 2, 3.1, and 3.2 overlap with the course material.
SML resources:
www.smlnj.org
tutorials, books, and documentation
user's guide
Scheme resources:
R5RS (the standard)
Programming Languages: Application and Interpretation
How to Design Programs (with links to the DrScheme web page)
Structure and Interpretation of Computer Programs
Smalltalk resources:
www.squeak.org
www.smalltalk.org
Keyboard shortcuts reference
Keunwoo Lee's Getting started in Squeak slides
Common 341 Squeak Overview
Jim Sawyer's "Reading Smalltalk"
The IBM Smalltalk Tutorial
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 minimal.
emacs for Windows SML NJ (use version 110.0.7)
DrScheme
Squeak
Meetings
Lecture: MWF 12:30-1:20, building MGH room 231
Section AA: Th 8:30-9:20, building MEB room 235
Section AB: Th 9:30-10:20, building SMI room 105
Final Exam: Th December 16, 2004, 8:30-10:20, building MGH room 231
Preliminaries
Join the course mailing list
Homework 0, due October 1, 9:00AM (0 points)
Getting started with UNIX and emacs
Guidelines for using ML in emacs