UW CSE341, Autumn 2018 (original) (raw)

CSE341: Programming Languages, Autumn 2018

Course Info

Course Information

Lecture: Monday, Wednesday, Friday 12:30-1:20 EEB 125
Section AA: Thursday 12:30-1:20, MGH 238
Section AB: Thursday 1:30-2:20, MGH 251
Section AC: Thursday 2:30-3:20, MGH 288
Section AD: Thursday 11:30-12:20, JHN 022

Office Hours:
Lanhao: Mondays 3:00-4:00, CSE 2nd Floor Breakout
Xinrong: Tuesdays 2:00-3:00, CSE 220
Daniel: Wednesdays 1:30-2:30, CSE 4th Floor Breakout
Ethan: Thursdays 5:35-6:35, CSE 4th Floor Breakout
Dan: Fridays 10:00-11:00, CSE 574
Tam: Fridays 2:00-3:00, CSE 4th Floor Breakout

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. Sep 26-28: Course Mechanics, ML Variable Bindings slides:pptx pdf pdf6up code: sml
  3. S1. Sep 27: Emacs, SML Mode, Shadowing, Error Messages
    code: errors errors fixed slides: Tam Xinrong Daniel/Lanhao
  4. L2. Sep 28 - Oct 1: Functions, Pairs, Lists slides:pptx pdf pdf6up code: sml
  5. L3. Oct 1-3. 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. Oct 3-5: Records, Datatypes, Case Expressions slides:pptx pdf pdf6up code: sml
  8. S2. Oct 4: Type Synonyms, Polymorphism, & More
    code: Xinrong Daniel/Lanhao Ethan slides:Daniel/Lanhao Xinrong/Ethan Tam
  9. L5. Oct 5-8: More Datatypes and Pattern Matching slides:pptx pdf pdf6up code: sml
  10. L6. Oct 8-10: Nested Pattern-Matching, Exceptions, Tail Recursion slides:pptx pdf pdf6up code: sml
  11. Unit 3: First-Class Functions and ClosuresReading Notes Videos
  12. L7. Oct 10-12: First-Class Functions slides:pptx pdf pdf6up code: sml
  13. S3. Oct 11: Standard-Library Docs, Unnecessary Function Wrapping, Higher-Order Functions
    code: Ethan Tam Xinrong slides:Daniel/Lanhao Xinrong worksheet:Worksheet Key
  14. L8. Oct 12-15: Lexical Scope and Function Closures slides:pptx pdf pdf6up code: sml
  15. L9. Oct 15-17: Function-Closure Idioms slides:pptx pdf pdf6up code: sml
  16. Unit 4: ML Modules, Type Inference, Equivalence, & MoreReading Notes Videos
  17. L10. Oct 17-19: ML Modules slides:pptx pdf pdf6up code: sml
  18. S4. Oct 18: Mutual Recursion, More Currying, More Modules
    code: Daniel/Lanhao Ethan Tam Xinrong slides:Daniel/Lanhao Ethan Tam Xinrong
  19. L11. Oct 19-22: Type Inference slides:pptx pdf pdf6up code: sml
  20. L12. Oct 22-24: Equivalence slides:pptx pdf pdf6up
  21. Course-Motivation Interlude, Oct 24pptx pdf pdf6up Videos
  22. S5. Oct 26: Midterm Review sample problems Xinrong slides
  23. Unit 5: Racket, Delaying Evaluation, Memoization, MacrosReading Notes Videos
  24. L13. Oct 26-31: Racket Introduction slides:pptx pdf pdf6up code: rkt
  25. L14. Oct 31, Nov 2: Thunks, Laziness, Streams, Memoization slides:pptx pdf pdf6up code: rkt
    Some of the material in L13 and L14 will likely be covered in S6 instead
  26. S6. Nov 1: Mutation, Delayed Evaluation code: Ethan Daniel/Lanhao Xinrong
  27. L15. Nov 5: Macros slides:pptx pdf pdf6up code: rkt
  28. Unit 6: Structs, Implementing Languages, Static vs. Dynamic TypingReading Notes Videos
  29. L16. Nov 5-7: Datatype-Style Programming With Lists or Structs slides:pptx pdf pdf6up code: rkt sml
  30. L17. Nov 7-9: Implementing Languages Including Closures slides:pptx pdf pdf6up code: rkt
    Some of the material in L17 will be covered in S7 instead
  31. S7. Legal ASTs, Macros as Functions, and More slides: Daniel/Lanhao Tam Ethan Xinrong code: Ethan Xinrong
  32. L18. Nov 9, 16, 19: Static vs. Dynamic Typing slides:pptx pdf pdf6up code: rkt sml
  33. Unit 7: Ruby, Object-Oriented Programming, SubclassingReading Notes Videos
  34. L19. Nov 14, 16: Introduction to Ruby and OOP slides:pptx pdf pdf6up code: <lec19%5Fsilly.rb> <lec19%5Fexample.rb>
  35. S8. Nov 15: Ruby arrays, hashes, ranges, blocks, and more code:Xinrong Ethan
  36. L20. Nov 16: Arrays & Such, Blocks & Procs, Inheritance & Overriding slides:pptx pdf pdf6up code: rb
    Some of the material in L20 will be covered in S8 instead
  37. L21. Nov 26: Dynamic Dispatch Precisely, & Manually in Racket slides:pptx pdf pdf6up code: rb sml rkt
  38. Unit 8: Program Decomposition, Mixins, Subtyping, and MoreReading Notes Videos
  39. L22. Nov 28: 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
  40. S9. Nov 29: Double-Dispatch, Mixins, and Visitors -
    slides:Daniel/Lanhao Tam Xinrong code:<sec9%5Fdispatch.sml> <sec9%5Fdispatch.rb> <sec9%5Fdispatch%5Fdaniellanhao.rb> <sec9%5Fmixins.rb> <sec9%5Fmixins%5Ftam.rb> <sec9%5Fvisitor.rb> <sec9%5Fvisitor.sml> <sec9%5Fvisitor%5Fzhaox29.sml>
  41. L23. Nov 30, Dec 3: Multiple Inheritance, Mixins, Interfaces, Abstract Methods slides:pptx pdf pdf6up code: rb
  42. L24. Dec 3-5: Subtyping slides:pptx pdf pdf6up
  43. L25. Dec 5: Subtyping for OOP; Comparing/Combining Generics and Subtyping slides:pptx pdf pdf6up
  44. Dec 5-7, Bonus code on functional programming in OOP/Java: java sml
  45. S10. Dec 6: Final Exam Review slides:Ethan
  46. L26. Dec 7: Course Victory Lap slides:pptx pdf pdf6up

Homeworks

Homework Assignments

**Turn-In Instructions:**The Turn-In Form links take you to a Google Form where you enter your name and upload your files. These forms are restricted to UW accounts and you will need to log in to UW Google Apps identity (@uw, not @cs). These are different from any personal Google account you have and different from your UW CSE Google account. If you have not yet activated UW G Suite, you will need to do so first. If you are not signed into to your UW account you may see a page like this. To fix, go to google.com and click on the circle in the upper right to add/switch account.

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 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-doc.org
Ruby home page