DOC PREVIEW
UW CSE 341 - Victory Lap

This preview shows page 1 out of 4 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 4 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 4 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CSE341: Programming Languages Lecture 28 Victory Lap Dan Grossman Fall 2011 Final Exam As also indicated in class-list email: • Next Tuesday, 2:30-4:20 • Intention is to focus primarily on material since the midterm – Including topics on homeworks and not on homeworks – Will also have a little ML, just like the course has had • You will need to write code and English • I hope you will pick up your exams once they are available – Even if you stop by in January Fall 2011 2 CSE341: Programming Languages Victory Lap A victory lap is an extra trip around the track – By the exhausted victors (us) - Review course goals – Slides from Lectures 1, 7.5 – Plus syllabus and the ACM/IEEE CS2013 draft Some big themes and perspectives – Stuff for five years from now more than for the final Course evaluations: please do take some time Fall 2011 3 CSE341: Programming Languages Thank you! • Huge thank-you to your Tas – Two new homeworks – Section taken to the next level – > 500 assignments total • Prompt grading with very few complaints 10 sections Wrote Tetris + job interviews + 1 lecture Just took 341 yet moved only 1 hour + … Fall 2011 4 CSE341: Programming Languages Thank you! • And a huge thank you to all of you – Great attitude about a very different view of software – Good class attendance and questions – Only a few lonely office hours – Occasionally laughed at stuff - Fall 2011 5 CSE341: Programming Languages [From Lecture 1] Fall 2011 6 CSE341: Programming Languages We have 10 weeks to learn the fundamental concepts of programming languages With hard work, patience, and an open mind, this course makes you a much better programmer – Even in languages we won’t use – Learn the core ideas around which every language is built, despite countless surface-level differences and variations – Poor course summary: “Uses SML, Racket, and Ruby” Today’s class: – Course mechanics – [A rain-check on motivation] – Dive into ML: Homework 1 due end of next week[From Lecture 1] Homework: • Seven total • To be done individually • Doing the homework involves: 1. Understanding the concepts being addressed 2. Writing code demonstrating understanding of the concepts 3. Testing your code to ensure you understand and have correct programs 4. “Playing around” with variations, incorrect answers, etc. We grade only (2), but focusing on (2) makes the homework harder • Challenge problems: Low points/difficulty ratio Fall 2011 7 CSE341: Programming Languages [From Lecture 1] Fall 2011 8 CSE341: Programming Languages • Many essential concepts relevant in any programming language – And how these pieces fit together • Use the languages ML, Racket, and Ruby because: – They let many of the concepts “shine” – Using multiple languages shows how the same concept can “look different” or actually be slightly different – In many ways simpler than Java • A big focus on functional programming – Not using mutation (assignment statements) (!) – Using first-class functions (can’t explain that yet) [From Lecture 1] Fall 2011 9 CSE341: Programming Languages Learning to think about software in this “PL” way will make you a better programmer even if/when you go back to old ways It will also give you the mental tools and experience you need for a lifetime of confidently picking up new languages and ideas [Somewhat in the style of The Karate Kid movies (1984, 2010)] [From Lecture 7.5] Fall 2011 10 CSE341: Programming Languages • A good mechanic might have a specialty, but also understands how “cars” (not 2004 Honda Civics) work – And that the syntax, I mean upholstery color, isn’t essential • A good mechanical engineer really knows how cars work, how to get the most out of them, and how to design better ones • To learn how cars work, it may make sense to start with a classic design rather than the latest model – A popular car may not be a good car for learning how cars work [From Lecture 7.5] Fall 2011 11 CSE341: Programming Languages This course focuses as much as it can on semantics and idioms • Correct reasoning about programs, interfaces, and compilers requires a precise knowledge of semantics – Not “I feel that conditional expressions might work like this” – Not “I like curly braces more than parentheses” – Much of software development is designing precise interfaces; what a PL means is a really good example • Idioms make you a better programmer – Best to see in multiple settings, including where they shine – See Java in a clearer light even if I never show you Java [From Lecture 7.5] Fall 2011 12 CSE341: Programming Languages Why SML, Racket, and Ruby are a useful combination for us dynamically typed statically typed functional Racket SML object-oriented Ruby Java ML: polymorphic types, pattern-matching, abstract types & modules Racket: dynamic typing, “good” macros, minimalist syntax, eval Ruby: classes but not types, very OOP, mixins [and much more] Really wish we had more time: Haskell: laziness, purity, type classes, monads Prolog: unification and backtracking [and much more][From Lecture 7.5] Fall 2011 13 CSE341: Programming Languages • No such thing as a “best” PL • There are good general design principles for PLs • A good language is a relevant, crisp interface for writing software • Software leaders should know PL semantics and idioms • Learning PLs is not about syntactic tricks for small programs • Functional languages have been on the leading edge for decades – Ideas get absorbed by the mainstream, but very slowly – Meanwhile, use the ideas to be a better C/Java/PHP hacker Benefits of No Mutation [This is from memory; I may have forgotten some] 1. Can freely alias or copy values/objects: Lecture 3 2. More functions/modules are equivalent: Lectures 3, 12 3. No need to make local copies of data: Lecture 14 4. Depth subtyping is sound: Lecture 25 State updates are appropriate when you are modeling a phenomenon that is inherently state-based – Performing a fold over a collection (e.g., summing a list) isn't! Fall 2011 14 CSE341: Programming Languages Some other highlights • Function closures are really powerful and convenient… – … and implementing them is not magic • Datatypes and pattern-matching


View Full Document

UW CSE 341 - Victory Lap

Documents in this Course
Macros

Macros

6 pages

Macros

Macros

6 pages

Macros

Macros

3 pages

Mutation

Mutation

10 pages

Macros

Macros

17 pages

Racket

Racket

25 pages

Scheme

Scheme

9 pages

Macros

Macros

6 pages

Load more
Download Victory Lap
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Victory Lap and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Victory Lap 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?