UW CSE341, Autumn 2017 (original) (raw)
CSE341: Programming Languages, Autumn 2017
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 2:30-3:20 MGH 241
Section AA: Thursday 12:30-1:20, MGH 242
Section AB: Thursday 1:30-2:20, MGH 284
Section AC: Thursday 2:30-3:20, MGH 284
Office Hours:
Mondays, 11:00AM-12:00PM, CSE574, Dan Grossman
Tuesdays, 10:30-11:20AM, CSE006, Xander Lent
Wednesdays, 1:00-2:00PM, CSE021, Bader Tayeb
Thursdays, 9:30-10:30AM, CSE220, Eric Mullen
Fridays, 12:00-1:00PM, CSE 3rd Floor Breakout, Kush Gupta
Fridays, 3:30-4:20PM, CSE 4th Floor Breakout, Tam Dang
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. Sep 27-29: Course Mechanics, ML Variable Bindings slides:pptx pdf pdf6up code: sml
- S1. Sep 28: Emacs, SML Mode, Shadowing, Error Messages
Xander slides: pptx pdf pdf6upEric slides: pptx pdf pdf6up code:errors errors fixed - L2. Sep 29 - Oct 2: Functions, Pairs, Lists slides:pptx pdf pdf6up code: sml
- L3. Oct 2-4. 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. Oct 4-6: Records, Datatypes, Case Expressions slides:pptx pdf pdf6up code: sml
- S2. Oct 5: Type Synonyms, Polymorphism, & More slides:pptx pdf pdf6up code: sml
- L5. Oct 6-9: More Datatypes and Pattern Matching slides:pptx pdf pdf6up code: sml
- L6. Oct 9-11: Nested Pattern-Matching, Exceptions, Tail Recursion slides:pptx pdf pdf6up code: sml
- Unit 3: First-Class Functions and ClosuresReading Notes Videos
- L7. Oct 11-13: First-Class Functions slides:pptx pdf pdf6up code: sml
- S3. Oct 12: Standard-Library Docs, Unnecessary Function Wrapping, Fold & More code: sml
- L8. Oct 13-16: Lexical Scope and Function Closures slides:pptx pdf pdf6up code: sml
- L9. Oct 16-18: Function-Closure Idioms slides:pptx pdf pdf6up code: sml
- Unit 4: ML Modules, Type Inference, Equivalence, & MoreReading Notes Videos
- L10. Oct 18-20: ML Modules slides:pptx pdf pdf6up code: sml
- S4. Oct 19: Mutual Recursion, More Currying, More Modules slides:pptx pdf pdf6up code: sml
- L11. Oct 23: Type Inference slides:pptx pdf pdf6up code: sml
- L12. Oct 25: Equivalence slides:pptx pdf pdf6up
- Course-Motivation Interlude, Oct 25-27slides pdf pdf6up Videos
- S5. Oct 26: Midterm Review
- Unit 5: Racket, Delaying Evaluation, Memoization, MacrosReading Notes Videos
- L13. Oct 27, Nov 1: Racket Introduction slides:pptx pdf pdf6up code: rkt
- L14. Nov 3: Thunks, Laziness, Streams, Memoization slides:pptx pdf pdf6up code: rkt
Some of the material in L13 and L14 was covered in S6 instead - S6. Nov 2: Mutation, Delayed Evaluation pptx pdf pdf6up code: rkt
- L15. Nov 6: Macros slides:pptx pdf pdf6up code: rkt
- Unit 6: Structs, Implementing Languages, Static vs. Dynamic TypingReading Notes Videos
- L16. Nov 6, 8: Datatype-Style Programming With Lists or Structs slides:pptx pdf pdf6up code: rkt sml
- L17. Nov 8, 13: Implementing Languages Including Closures slides:pptx pdf pdf6up code: rkt
Some of the material in L17 will be covered in S7 instead - S7. Legal ASTs, Macros as Functions, and More pptx pdf pdf6up code: rkt
- L18. Nov 13, 20, 27: Static vs. Dynamic Typing slides:pptx pdf pdf6up code: rkt sml
- Unit 7: Ruby, Object-Oriented Programming, SubclassingReading Notes Videos
- L19. Nov 15, 20: Introduction to Ruby and OOP slides:pptx pdf pdf6up code: <lec19%5Fsilly.rb> <lec19%5Fexample.rb>
- S8. Nov 16: Ruby arrays, hashes, ranges, blocks, and more code: <sec8.rb>
- L20. Nov 20: Arrays & Such, Blocks & Procs, Inheritance & Overriding slides:pptx pdf pdf6up code: rb
Some of the material in L20 will be covered in S8 instead - L21. Nov 27, 29: 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. Nov 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. Nov 30: Double-Dispatch, Mixins, and Visitors
slides:pptx pdf pdf6up code:<sec9%5Fdispatch.sml> <sec9%5Fdispatch.rb> <sec9%5Fmixins.rb> <sec9%5Fvisitor.rb> <sec9%5Fvisitor.sml> - L23. Dec 1-4: Multiple Inheritance, Mixins, Interfaces, Abstract Methods slides:pptx pdf pdf6up code: rb
- L24. Dec 4-6: Subtyping slides:pptx pdf pdf6up
- L25. Dec 6: Subtyping for OOP; Comparing/Combining Generics and Subtyping slides:pptx pdf pdf6up
- S10. Dec 7: Final Exam Review
- L26. Dec 8: Course Victory Lap slides:pptx pdf pdf6up
Homeworks
Homework Assignments
Homework 0: on-line survey worth 0 points, "due" Friday September 29, 11PM
**Turn-In Instructions for regular homeworks:**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 G Suite (G as in Google) with your UW credentials. 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 1, due Friday October 6, 11PM
- Homework 2, due Monday October 16, 11PM
- Assignment
- <hw2.zip> (contains 10 files, only 2-3 of which you need to modify)
- Turn-In Form
- Homework 3, due Thursday October 26, 11PM
- Assignment
- <hw3provided.sml>
- Turn-In Form
- Homework 4, due Thursday November 9, 11PM
- Assignment
- provided code
- provided tests
- sample image files:<dan.jpg> <curry.jpg> <dog.jpg> <dog2.jpg>
- Turn-In Form
- Homework 5, due Monday November 20, 11PM
- Homework 6, due Thursday November 30, 11PM
- Assignment
- <hw6graphics.rb>
- <hw6provided.rb>
- <hw6runner.rb>
- <hw6assignment.rb>
- Turn-In Form
- Homework 7, due Friday December 8, 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