UW CSE341, Spring 2016 (original) (raw)

CSE341: Programming Languages, Spring 2016

Course Info

Course Information

Lecture: Monday, Wednesday, Friday 10:30-11:20 MGH 389
Section AA: Thursday 12:30-1:20 MGH228
Section AB: Thursday 1:30-2:20 MGH238
Section AC: Thursday 2:30-3:20 JHN 026
Section AD: Thursday 11:30-12:20 THO202
Section AE: Thursday 9:30-10:20 LOW206

Office Hours:
Mondays, 4:30-5:30PM, Allen Center 220, Naruto Iwasaki
Tuesdays, 10:30-11:30AM, Allen Center 021, Justin Harjanto
Wednesdays, 9:15-10:15AM, Allen Center 218, Konstantin Weitz
Wednesdays, 3:00-4:00PM, Allen Center 002 (“the lab”), Ben Tebbs
Thursdays, 3:30-4:30PM, Allen Center 218, Justin Adsuara
Fridays, 11:30AM-12:30PM, Allen Center 220, Nicholas Shahan
Fridays, 2:00-3:00PM, Allen Center 574, Dan Grossman

Course Materials

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

  1. Unit 1: ML Functions, Tuples, Lists, and MoreReading Notes Videos
  2. L1. Mar 28-30: Course Mechanics, ML Variable Bindings slides:pptx pdf pdf6up code: sml file-from-class
  3. L2 Mar 30 - Apr 1. Functions, Pairs, Lists slides:pptx pdf pdf6up code: sml
  4. S1. Mar 31: Emacs, SML Mode, Shadowing, Error Messages
    Konstantin slides:pptx pdf pdf6up code:errors errors fixed
    Nick slides:pptx pdf pdf6up code:errors errors fixed
  5. L3 Apr 4. Local Bindings, Options, Benefits of No Mutation slides:pptx pdf pdf6up code: sml
  6. Unit 2: Datatypes, Pattern Matching, Tail Recursion, and MoreReading Notes Videos
  7. L4. Apr 6: Records, Datatypes, Case Expressions slides:pptx pdf pdf6up code: sml
  8. S2. Apr 7: Type Synonyms, Polymorphism, & More
    Konstantin slides:pptx pdf pdf6up code: sml
    Nick slides:pptx pdf pdf6up code: sml
  9. L5. Apr 8: More Datatypes and Pattern Matching slides:pptx pdf pdf6up code: sml
  10. L6. Apr 11: Nested Pattern-Matching, Exceptions, Tail Recursion slides:pptx pdf pdf6up code: sml
  11. Unit 3: First-Class Functions and ClosuresReading Notes Videos
  12. L7. Apr 13-15 First-Class Functions slides:pptx pdf pdf6up code: sml
  13. S3. Apr 14: Standard-Library Docs, Unnecessary Function Wrapping, Fold & More
    Konstantin slides:pptx pdf pdf6up code: sml
    Nick slides:pptx pdf pdf6up code: sml
  14. L8. Apr 15: Lexical Scope and Function Closures slides:pptx pdf pdf6up code: sml
  15. L9. Apr 18: Function-Closure Idioms slides:pptx pdf pdf6up code: sml
  16. Unit 4: ML Modules, Type Inference, Equivalence, & MoreReading Notes Videos
  17. L10. Apr 20: ML Modules slides:pptx pdf pdf6up code: sml
  18. S4. Apr 21: Mutual Recursion, More Currying, More Modules
    Konstantin slides:pptx pdf pdf6up code: sml
    Nick slides:pptx pdf pdf6up code: sml
  19. L11. Apr 22-25: Type Inference slides:pptx pdf pdf6up code: sml
  20. L12. Apr 25: Equivalence slides:pptx pdf pdf6up
  21. Course-Motivation Interlude, Apr 27slides pdf pdf6up Videos
  22. Unit 5: Racket, Delaying Evaluation, Memoization, MacrosReading Notes Videos
  23. L13. Apr 27 - May 2: Racket Introduction slides:pptx pdf pdf6up code: rkt
  24. L14. May 4: Thunks, Laziness, Streams, Memoization slides:pptx pdf pdf6up code: rkt
    Some of the material in L14 is covered in S6 instead
  25. S6. May 5: More streams, Memoization, and More
    Konstantin code: rkt
    Nick code: rkt
  26. L15. May 6: Macros slides:pptx pdf pdf6up code: rkt
  27. Unit 6: Structs, Implementing Languages, Static vs. Dynamic TypingReading Notes Videos
  28. L16. May 9: Datatype-Style Programming With Lists or Structs slides:pptx pdf pdf6up code: rkt sml
  29. L17. May 11-13: Implementing Languages Including Closures slides:pptx pdf pdf6up code: rkt
    Some of the material in L17 was covered in S7 instead
  30. S7. May 12: Legal ASTs, Macros as Functions, and More
    Konstantin code (no slides): rkt
    Nick slides (code same as L17): pptx pdf pdf6up
  31. L18. May 13-16: Static vs. Dynamic Typing slides:pptx pdf pdf6up code: rkt sml
  32. Unit 7: Ruby, Object-Oriented Programming, SubclassingReading Notes Videos
  33. L19. May 16-18: Introduction to Ruby and OOP slides:pptx pdf pdf6up code: <lec19%5Fsilly.rb> <lec19%5Fexample.rb>
  34. S8. May 19: Ruby arrays, hashes, ranges, blocks, and more annotated code: rb
  35. L20. May 20-23: Arrays & Such, Blocks & Procs, Inheritance & Overriding slides:pptx pdf pdf6up code: rb
    Some of the material in L20 will be covered in S8 instead
  36. L21. May 23: Dynamic Dispatch Precisely, & Manually in Racket slides:pptx pdf pdf6up code: rb sml rkt
  37. Unit 8: Program Decomposition, Mixins, Subtyping, and MoreReading Notes Videos
  38. L22. May 25: OOP vs. Functional Decomposition; Adding Operators & Variants; Double-Dispatch
    slides:pptx pdf pdf6up code stage A:sml rb java code stage B:sml rb java code stage C:sml rb java
  39. S9. May 26: Double-Dispatch, Mixins, and Visitors
    Konstantin (no slides): rb
    Nick: pptx pdf pdf6up sml dispatch sml visitor rb dispatch rb visitor rb mixins
  40. L23. May 27: Multiple Inheritance, Mixins, Interfaces, Abstract Methods slides:pptx pdf pdf6up code: rb
  41. L24. June 1: Subtyping slides:pptx pdf pdf6up
  42. S10. Final Exam Review
  43. L25. June 3: Subtyping for OOP; Comparing/Combining Generics and Subtyping slides:pptx pdf pdf6up
  44. L26. June 3: Course Victory Lap slides:pptx pdf pdf6up

Links

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 Documentation tab

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


Valid CSS! Valid XHTML 1.1