CSE341: Programming Languages, Spring 2017

Course Info

Course Information

Lecture: Monday, Wednesday, Friday 12:30-1:20 JHN 102
Section AA: Thursday 12:30-1:20, MGH 242
Section AB: Thursday 1:30-2:20, MGH 241
Section AC: Thursday 2:30-3:20, MGH 271
Section AD: Thursday 11:30-12:20, CMU 228
Section AE: Thursday 9:30-10:20, THO 125
Section AF: Thursday 12:30-1:20, CMU 228

Office Hours:
Mondays, 10:30-11:30AM, CSE574, Dan Grossman
Mondays, 4:30-5:30PM, CSE002 (one of the labs), Emily Leland
Tuesdays, 10:30-11:30AM, CSE 007, Justin Harjanto
Tuesdays, 12:00-1:00PM, CSE 021, Nick Mooney
Wednesdays, 9:30-10:30AM, CSE 006 (one of the labs), Waylon Huang
Wednesdays, 1:30-2:30PM, CSE 006 (one of the labs), Miles Saul
Thursdays, 9:30-10:30AM, CSE 220, Spencer Pearson
Thursdays, 3:00-4:00PM, CSE 3rd-floor breakout, Tam Dang
Fridays, 1:30-2:30PM, CSE 021, Daniel Fang
Fridays, 2:30-3:30PM, CSE 021, Thomas Sixuan Lou

Contact Info

Contact Information

Course Email List (mandatory): You should receive email sent to the course mailing list regularly, roughly at least once a day. Any important announcements will be sent to this list.

Email sent to cse341-staff@cs.washington.edu will reach the instructor and all the TAs. For questions multiple staff members can answer, we encourage you to use this email so that you get a quicker reply and the whole staff is aware of points of confusion.

Course staff:
  All staff: cse341-staff@cs.washington.edu
  Instructor: Dan Grossman, djg@cs.uw.edu (not @u...)
  TA: Tam Dang, dangt7@uw.edu
  TA: Daniel Fang, danfang@uw.edu
  TA: Justin Harjanto, gestone@cs.uw.edu
  TA: Waylon Huang, waylonh@cs.uw.edu
  TA: Emily Leland, emilyjleland@gmail.com
  TA: Thomas Sixuan Lou, lous@cs.uw.edu
  TA: Nicholas Mooney, nmooney@cs.uw.edu
  TA: Spencer Pearson, suspense@cs.uw.edu
  TA: Miles Saul, mhsaul@uw.edu

Course Discussion Board (optional but encouraged)

Anonymous Feedback (goes only to the instructor)

Course Materials

Material in the future naturally subject to change in terms of coverage or schedule

  1. Unit 1: ML Functions, Tuples, Lists, and More    Reading Notes    Videos
  2.   L1. Mar 27-29: Course Mechanics, ML Variable Bindings   slides: pptx   pdf   pdf6up   code: sml
  3.   L2. Mar 29-31. Functions, Pairs, Lists   slides: pptx   pdf   pdf6up   code: sml
  4.   S1. Apr 1: Emacs, SML Mode, Shadowing, Error Messages
         Justin slides: pptx   pdf   pdf6up      Nick slides: pptx   pdf   pdf6up      Spencer slides: pptx   pdf   pdf6up      code:   errors   errors fixed
  5.   L3. Apr 3. Local Bindings, Options, Benefits of No Mutation   slides: pptx   pdf   pdf6up   code: sml
  7. Unit 2: Datatypes, Pattern Matching, Tail Recursion, and More    Reading Notes    Videos
  8.   L4. Apr 5: Records, Datatypes, Case Expressions   slides: pptx   pdf   pdf6up   code: sml
  9.   S2. Apr 6: Type Synonyms, Polymorphism, & More
         Justin: pptx   pdf   pdf6up   sml   java      Nick: pptx   pdf   pdf6up   sml      Spencer: pptx   pdf   pdf6up
  10.   L5. Apr 7: More Datatypes and Pattern Matching   slides: pptx   pdf   pdf6up   code: sml
  11.   L6. Apr 10-12: Nested Pattern-Matching, Exceptions, Tail Recursion   slides: pptx   pdf   pdf6up   code: sml
  13. Unit 3: First-Class Functions and Closures    Reading Notes    Videos
  14.   L7. Apr 12-14 First-Class Functions   slides: pptx   pdf   pdf6up   code: sml
  15.   S3. Apr 13: Standard-Library Docs, Unnecessary Function Wrapping, Fold & More
         Justin: pptx   pdf   pdf6up   sml   mutual recursion   java      Nick: pptx   pdf   pdf6up   sml      Spencer: pptx   pdf   pdf6up   sml
  16.   L8. Apr 14-17: Lexical Scope and Function Closures   slides: pptx   pdf   pdf6up   code: sml
  17.   L9. Apr 17: Function-Closure Idioms   slides: pptx   pdf   pdf6up   code: sml
  19. Unit 4: ML Modules, Type Inference, Equivalence, & More    Reading Notes    Videos
  20.   L10. Apr 19: ML Modules   slides: pptx   pdf   pdf6up   code: sml
  21.   S4. Apr 20: Mutual Recursion, More Currying, More Modules
         Justin: sml   js      Nick: pptx   pdf   pdf6up   sml      Spencer: pptx   pdf   pdf6up   sml
  22.   L11. Apr 21-24: Type Inference   slides: pptx   pdf   pdf6up   code: sml
  23.   L12. Apr 24: Equivalence   slides: pptx   pdf   pdf6up
  25. Course-Motivation Interlude, Apr 26  slides  pdf  pdf6up   Videos
  26.   S5. Apr 27: Midterm Review
         Spencer: sml
  28. Unit 5: Racket, Delaying Evaluation, Memoization, Macros    Reading Notes    Videos
  29.   L13. Apr 26, May 1-3: Racket Introduction   slides: pptx   pdf   pdf6up   code: rkt
  30.   L14. May 3: Thunks, Laziness, Streams, Memoization   slides: pptx   pdf   pdf6up   code: rkt
    Some of the material in L14 will be covered in S6 instead
  31.   S6. May 4: More streams, Memoization, and More
  32.   L15. May 5: Macros   slides: pptx   pdf   pdf6up   code: rkt

Homework Assignments

Homework 0: on-line survey worth 0 points, "due" Wednesday March 29

Dropbox for homework turn-in


Midterm: Friday April 28, in class
Sample midterms:
   Spring 2016   unsolved   solved
   Spring 2013   unsolved   solved
   Winter 2013   unsolved   solved
   Fall 2011   unsolved   solved
   Spring 2011   unsolved   solved
   Spring 2008   unsolved   solved
   Winter 2008   unsolved   solved

Final Exam: Thursday June 8, 8:30-10:20AM


Software Installation and Use

Instructions for SML and Emacs, which is everything you need for the first half of the course.
 Videos showing the software installation on Windows

Instructions for Racket and DrRacket


Links to Other Resources

The course materials on this page (lectures, sections, homeworks, installation instructions, videos) are designed to provide what you need for the course except for some details that you can look up in standard-library documentation or users' guides for particular languages. Links for such information is below. We also provide links to useful books and tutorials that provide alternate explanations. We will not follow any textbooks closely, but you may still find them useful. Suggestions for additional links are welcome.

SML resources:
  www.smlnj.org (links to many things, including the next three resources)
  user's guide
  standard-library documentation
  tutorials, books, and documentation
  Elements of ML Programming, ML'97 Edition, Jeffrey D. Ullman, 1998.
   This is a textbook that takes a different approach but does cover some of the same material.
   Check the errata page to avoid bugs.

Racket resources:
  The Racket Guide
  racket-lang.org, particularly the Docs button

Ruby resources:
  Programming Ruby 1.9 & 2.0: The Pragmatic Programmers' Guide, Dave Thomas et al.
   Check the errata page to avoid bugs.
  Ruby home page

Valid CSS! Valid XHTML 1.1