CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Winter 2013.

Slides:



Advertisements
Similar presentations
Programming Languages Xiaojuan Cai
Advertisements

CSE341: Programming Languages Lecture 12 Equivalence Dan Grossman Spring 2013.
CSE341: Programming Languages Lecture 28 Victory Lap Dan Grossman Fall 2011.
CSE341: Programming Languages Lecture 7.5 Course Motivation Dan Grossman Fall 2011.
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Fall 2011.
CSE332: Data Abstractions Lecture 28: Course Wrap-Up / Victory Lap Dan Grossman Spring 2010.
January 12, Compiler Design Hongwei Xi Comp. Sci. Dept. Boston University.
January 19, Compiler Design Hongwei Xi Comp. Sci. Dept. Boston University.
September 5, Concepts of Programming Languages Hongwei Xi Comp. Sci. Dept. Boston University.
July 16, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
CSE341: Programming Languages Interlude: Course Motivation Dan Grossman Spring 2013.
CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Spring 2013.
CSE341: Programming Languages Lecture 11 Type Inference Dan Grossman Winter 2013.
CS211: Course Overview George Mason University. Today’s topics Go over the syllabus Go over resources – Marmoset – Piazza – Textbook Highlight important.
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
CSE 501N Fall ‘09 00: Introduction 27 August 2009 Nick Leidenfrost.
EECE 310 Software Engineering Lecture 0: Course Orientation.
CSE332: Data Abstractions Lecture 26: Course Victory Lap Dan Grossman Spring 2012.
CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Spring 2013.
CSE 113 Introduction to Computer Programming Lecture slides for Week 1 Monday, August 29 th, 2011 Instructor: Scott Settembre.
Objects & Dynamic Dispatch CSE 413 Autumn Plan We’ve learned a great deal about functional and object-oriented programming Now,  Look at semantics.
Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.
CSE 331 Software Design & Implementation Dan Grossman Spring 2015 Course Victory Lap (Based on slides by Mike Ernst, Dan Grossman, David Notkin, Hal Perkins)
CSE 341 Programming Languages Dynamic Dispatch vs. Closures OOP vs. Functional Decomposition Wrapping Up Zach Tatlock Spring 2014.
CSE373: Data Structures & Algorithms Lecture 23: Course Victory Lap Kevin Quinn Fall 2015.
C Programming Lecture 1 : Introduction Bong-Soo Sohn Associate Professor School of Computer Science and Engineering Chung-Ang University.
COP4020 INTRODUCTION FALL COURSE DESCRIPTION Programming Languages introduces the fundamentals of the design and implementation of programming languages.
Programming Languages Dan Grossman 2013 Optional: Course-Motivation Introduction.
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 24 Wrap Up.
Introduction to CSCI 1311 Dr. Mark C. Lewis
CSE341: Programming Languages Lecture 26 Course Victory Lap
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Interlude: Course Motivation
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Spring 2016.
CSE373: Data Structures & Algorithms
CSE341: Programming Languages Lecture 11 Type Inference
Programming Languages Dan Grossman 2013
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Winter 2013.
CSE 374 Programming Concepts & Tools
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Spring 2017.
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Spring 2017.
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Autumn 2017.
CSE341: Programming Languages Interlude: Course Motivation
CSE341: Programming Languages Interlude: Course Motivation
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Fall 2017.
CSE 331 Software Design & Implementation
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Autumn 2018.
Organization of Programming Languages
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Zach Tatlock Winter 2018.
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Autumn 2018.
CSE341: Programming Languages Interlude: Course Motivation
Automata and Formal Languages
Principles of Programming Languages
CSE 331 Software Design & Implementation
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE 331 Software Design & Implementation
CSE341: Programming Languages Lecture 26 Course Victory Lap
Principles of Programming Languages
Dan Grossman / Eric Mullen Autumn 2017
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Spring 2019.
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Interlude: Course Motivation
Brett Wortzman Summer 2019 Slides originally created by Dan Grossman
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Spring 2019.
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 26 Course Victory Lap
Presentation transcript:

CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Winter 2013

Final Exam As also indicated in class-list Next Thursday, 8:30-10:20 Intention is to focus primarily on material since the midterm –Including topics on homeworks and not on homeworks –May 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 when available –Probably early Spring Quarter Winter 20132CSE341: Programming Languages

Victory Lap A victory lap is an extra trip around the track –By the exhausted victors (us) Review course goals –Slides from Introduction and Course-Motivation Some big themes and perspectives –Stuff for five years from now more than for the final You might be curious about that Coursera thing Course evaluations: please do take some time Winter 20133CSE341: Programming Languages

Thank you! Huge thank-you to your TAs –Unbelievable grading scripts –Section taken to the next level –Great team effort putting 341 students first Even after we mostly lost Eric to illness Seriously, an epic dream team: thank you Cody, Eric, Rachel, Sean, Sunjay!! Winter 20134CSE341: 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 –Zero (!) lonely office hours –Occasionally laughed at stuff Computer science ought to be challenging and fun! Winter 20135CSE341: Programming Languages

A Word on Coursera My 341 goal: Coursera benefits outweigh costs –Videos, reading notes, large staff > huge other time commitment What happened “out there”: –Same homeworks, different exams –> 900,000 video views; 30,000 clicked play on at least 1 –5000 turned in first homework –2200 turned in MUPL interpreter –More challenging than most online courses Then again, more challenging than most UW courses Questions? Thoughts? Want to help make it better? Winter 20136CSE341: Programming Languages

[From Lecture 1] Many essential concepts relevant in any programming language –And how these pieces fit together Use ML, Racket, and Ruby languages: –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 Big focus on functional programming –Not using mutation (assignment statements) (!) –Using first-class functions (can’t explain that yet) –But many other topics too Winter 20137CSE341: Programming Languages

[From Lecture 1] 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)] Winter 20138CSE341: Programming Languages

[From Course Motivation] No such thing as a “best” PL Fundamental concepts easier to teach in some (multiple) PLs A good PL is a relevant, elegant interface for writing software –There is no substitute for precise understanding of PL semantics Functional languages have been on the leading edge for decades –Ideas have been absorbed by the mainstream, but very slowly –First-class functions and avoiding mutation increasingly essential –Meanwhile, use the ideas to be a better C/Java/PHP hacker Many great alternatives to ML, Racket, and Ruby, but each was chosen for a reason and for how they complement each other Winter 20139CSE341: Programming Languages

[From Course Motivation] SML, Racket, and Ruby are a useful combination for us dynamically typedstatically 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] Winter CSE341: Programming Languages

Benefits of No Mutation [An incomplete list] 1.Can freely alias or copy values/objects: Unit 1 2.More functions/modules are equivalent: Unit 4 3.No need to make local copies of data: Unit 5 4.Depth subtyping is sound: Unit 8 State updates are appropriate when you are modeling a phenomenon that is inherently state-based –A fold over a collection (e.g., summing a list) is not! Winter CSE341: Programming Languages

Some other highlights Function closures are really powerful and convenient… –… and implementing them is not magic Datatypes and pattern-matching are really convenient… –… and exactly the opposite of OOP decomposition Sound static typing prevents certain errors… –… and is inherently approximate Subtyping and generics allow different kinds of code reuse… –… and combine synergistically Modularity is really important; languages can help Winter CSE341: Programming Languages

From the syllabus Successful course participants will: Internalize an accurate understanding of what functional and object-oriented programs mean Develop the skills necessary to learn new programming languages quickly Master specific language concepts such that they can recognize them in strange guises Learn to evaluate the power and elegance of programming languages and their constructs Attain reasonable proficiency in the ML, Racket, and Ruby languages and, as a by-product, become more proficient in languages they already know Winter CSE341: Programming Languages

The End This really is my favorite course and it probably always will be Don’t be a stranger! Winter CSE341: Programming Languages