UW CSE341, Spring 2019 (original) (raw)
CSE341: Programming Languages, Spring 2019
Course Info
Course Information
- Syllabus
- Academic-Integrity Policy
- Challenge-Problem Policy
- Relation to Coursera Course
- Gradebook
- Course Calendar (the only information that is on the calendar without also being on the main course page is one-time office-hour changes)
Lecture: Monday, Wednesday, Friday 12:30-1:20 CSE2 G01
Section AA: Thursday 12:30-1:20, MGH 234 (Porter)
Section AB: Thursday 1:30-2:20, MGH 254 (Josh)
Section AC: Thursday 2:30-3:20, THO 202 (Taylor, Yuma)
Section AD: Thursday 11:30-12:20, ECE 042 (Lanhao, Alex)
Office Hours:
Yuma: Mondays 10:00-11:00am, CSE2 151
Lanhao: Mondays 3:30-4:30pm, CSE2 151
Taylor: Tuesdays 12:30-1:30pm, CSE2 150
Josh: Tuesdays 3:00-4:00pm, CSE2 150
Dan: Wednesdays 11:00am-12:00pm, CSE2 309
Porter: Thursdays 5:30-7:30pm, CSE2 150
Alex: Fridays 10:30am-12:00pm, CSE2 151
Course Materials
Material in the future naturally subject to change in terms of coverage or schedule
- Unit 1: ML Functions, Tuples, Lists, and MoreReading Notes Videos
- L1. Apr 1-3: Course Mechanics, ML Variable Bindings slides:pptx pdf pdf6up code: sml
- L2. Apr 3-5: Functions, Pairs, Lists slides:pptx pdf pdf6up code: sml
- S1. Apr 4: Emacs, SML Mode, Shadowing, Error Messages
code:errors errors fixed slides:Yuma & Taylor Porter An & Josh Lanhao & Alex handouts:Porter - L3. Apr 5-8. Local Bindings, Options, Benefits of No Mutation slides:pptx pdf pdf6up code: sml
- Unit 2: Datatypes, Pattern Matching, Tail Recursion, and MoreReading Notes Videos
- L4. Apr 10: Records, Datatypes, Case Expressions slides:pptx pdf pdf6up code: sml
- L5. Apr 12-15: More Datatypes and Pattern Matching slides:pptx pdf pdf6up code: sml
- S2. Apr 11: Type Synonyms, Polymorphism, & More
code:Yuma & Taylor slides:Yuma & Taylor Porter Lanhao & Alex Josh handouts:Porter - L6. Apr 15-17: Nested Pattern-Matching, Exceptions, Tail Recursion slides:pptx pdf pdf6up code: sml
- Unit 3: First-Class Functions and ClosuresReading Notes Videos
- L7. Apr 17: First-Class Functions slides:pptx pdf pdf6up code: sml
- S3. Apr 18: Standard-Library Docs, Unnecessary Function Wrapping, Higher-Order Functions
code:Yuma & Taylor Josh slides:Yuma & Taylor Lanhao & Alex Josh Porter handouts:Yuma & Taylor Porter Course (solutions) - L8. Apr 19: Lexical Scope and Function Closures slides:pptx pdf pdf6up code: sml
- L9. Apr 22-24: Function-Closure Idioms slides:pptx pdf pdf6up code: sml
- Unit 4: ML Modules, Type Inference, Equivalence, & MoreReading Notes Videos
- L10. Apr 24: ML Modules slides:pptx pdf pdf6up code: sml
- S4. Apr 25: Mutual Recursion, More Currying, More Modules
code:Yuma & Taylor Josh slides:Yuma & Taylor Josh Lanhao & Alex Porter handouts:Porter - L11. Apr 26: Type Inference slides:pptx pdf pdf6up code: sml
- L12. Apr 26-29: Equivalence slides:pptx pdf pdf6up
- Course-Motivation Interlude, Apr 29 - May 1pptx pdf pdf6up Videos
- S5. May 2: Midterm Review slides:Josh
- Unit 5: Racket, Delaying Evaluation, Memoization, MacrosReading Notes Videos
- L13. May 1-6,8: Racket Introduction slides:pptx pdf pdf6up code: rkt
- L14. May 8-10: 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 - S6. May 9: Mutation, Delayed Evaluation
code:Josh Lanhao & Alex slides:Porter Josh handouts:Porter Lanhao & Alex - L15. May 10: Macros slides:pptx pdf pdf6up code: rkt
- Unit 6: Structs, Implementing Languages, Static vs. Dynamic TypingReading Notes Videos
- L16. May 13: Datatype-Style Programming With Lists or Structs slides:pptx pdf pdf6up code: rkt sml
- L17. May 13-15: Implementing Languages Including Closures slides:pptx pdf pdf6up code: rkt
Some of the material in L17 will be covered in S7 instead - S7. May 16: Legal ASTs, Macros as Functions, and More
code:Josh Yuma & Taylor Lanhao & Alex slides:Josh Yuma & Taylor Lanhao & Alex Porter handout:Porter - L18. May 15-17: Static vs. Dynamic Typing slides:pptx pdf pdf6up code: rkt sml
- Unit 7: Ruby, Object-Oriented Programming, SubclassingReading Notes Videos
- L19. May 20-22: Introduction to Ruby and OOP slides:pptx pdf pdf6up code: <lec19%5Fsilly.rb> <lec19%5Fexample.rb>
- L20. May 22-24: Arrays & Such, Blocks & Procs, Inheritance & Overriding slides:pptx pdf pdf6up code: rb
Some of the material in L20 will be covered in S8 instead - S8. May 23: Ruby arrays, hashes, ranges, blocks, and more
codeJosh slides:Josh Yuma & Taylor Porter handout:Porter - L21. May 24: Dynamic Dispatch Precisely, & Manually in Racket slides:pptx pdf pdf6up code: rb sml rkt
- Unit 8: Program Decomposition, Mixins, Subtyping, and MoreReading Notes Videos
- L22. May 29: 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 - S9. May 30: Double-Dispatch, Mixins, and Visitors
code: Yuma & Taylor: (rb,sml,rb visitor) slides:Josh Yuma & Taylor Lanhao & Alex Porter handout:Porter - L23. May 31: Multiple Inheritance, Mixins, Interfaces, Abstract Methods slides:pptx pdf pdf6up code: rb
- L24. Jun 3: Subtyping slides:pptx pdf pdf6up
- L25. Jun 5: Subtyping for OOP; Comparing/Combining Generics and Subtyping slides:pptx pdf pdf6up
- Jun 5-7, Bonus code on functional programming in OOP/Java: java sml
- S10. Jun 6: Final Exam Review
- L26. Jun 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.
- Homework 0: on-line survey worth 0 points, “due” Friday April 5, 11PM
- Homework 1, due Wednesday April 10, 11PM
- Homework 2, due Friday April 19, 11PM
- Assignment
- <hw2.zip> (contains 10 files, only 2-3 of which you need to modify)
- Turn-In Form
- Homework 3, due Monday April 29, 11PM
- Assignment
- <hw3.sml>
- Turn-In Form
- Homework 4, due Tuesday May 14, 11PM
- Assignment
- provided code
- provided tests
- sample image files:<dan.jpg> <curry.jpg> <dog.jpg> <dog2.jpg>
- Turn-In Form
- Homework 5, due Wednesday May 22, 11PM
- Homework 6, due Thursday May 30, 11PM
- Assignment
- <hw6graphics.rb>
- <hw6provided.rb>
- <hw6runner.rb>
- <hw6assignment.rb>
- Turn-In Form
- Homework 7, due Friday June 7, 11PM
- Assignment
- <hw7.sml>
- <hw7.rb>
- <hw7testsprovided.sml>
- <hw7testsprovided.rb>
- Turn-In Form
Links
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-doc.org
Ruby home page