11/16/2018 The PL Part of CS2013 Dan Grossman Department of Computer Science & Engineering University of Washington SPLASH-E October 28, 2013.

Slides:



Advertisements
Similar presentations
Objects and Classes David Walker CS 320. Advanced Languages advanced programming features –ML data types, exceptions, modules, objects, concurrency,...
Advertisements

OO Programming in Java Objectives for today: Overriding the toString() method Polymorphism & Dynamic Binding Interfaces Packages and Class Path.
Recap 1.Programmer enters expression 2.ML checks if expression is “well-typed” Using a precise set of rules, ML tries to find a unique type for the expression.
WEAVING CODE EXTENSIONS INTO JAVASCRIPT Benjamin Lerner, Herman Venter, and Dan Grossman University of Washington, Microsoft Research.
1 Undergraduate Curriculum Revision Department of Computer Science February 10, 2010.
CSE341: Programming Languages Lecture 23 OO vs. Functional Decomposition; Adding Operations & Variants; Double-Dispatch Dan Grossman Fall 2011.
Teaching Programming Language Design and Implementation: Perspective From Two Roles Dan Grossman PLDI Panel 2011.
CSE341: Programming Languages Lecture 17 Structs, Implementing Languages, Implementing Higher-Order Functions Dan Grossman Fall 2011.
Advanced Compilers CSE 231 Instructor: Sorin Lerner.
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Carolyn Seaman University of Maryland, Baltimore County.
CS2110: SW Development Methods Design of methods (functions) Class design – CRC cards – UML class and sequence diagrams Software Design.
Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.
1 Welcome to CS 362 Applied Software Engineering What happens after (and during) design? Testing, debugging, maintaining programs Lessons for software.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
CS 106 Introduction to Computer Science I 04 / 20 / 2007 Instructor: Michael Eckmann.
Guiding Principles. Goals First we must agree on the goals. Several (non-exclusive) choices – Want every CS major to be educated in performance including.
CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.
Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.
CSE341: Programming Languages Lecture 22 OOP vs. Functional Decomposition; Adding Operators & Variants; Double-Dispatch Dan Grossman Spring 2013.
CS5205Introduction1 CS5205: Foundation in Programming Languages Lecture 0 : Overview Lecturer : Chin Wei Ngan Office : COM2.
Course Introduction David Ferry, Chris Gill Department of Computer Science and Engineering Washington University, St. Louis MO 1E81.
CSE 341 Section 10 Subtyping, Review, and The Future.
Welcome! Simone Campanoni
CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Winter 2013.
Object Oriented Programming Some Interesting Genes.
The heavyweight parts of lightweight languages LL1 Workshop November 17, 2001.
Introduction to CSCI 1311 Dr. Mark C. Lewis
CSE341: Programming Languages Lecture 26 Course Victory Lap
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Spring 2017.
CSE341: Programming Languages Lecture 22 OOP vs
Programming Languages Dan Grossman 2013
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Names and Attributes Names are a key programming language feature
Corky Cartwright January 13, 2014
Year 7 Information Evening
Programming Language Design Concepts
CS 326 Programming Languages, Concepts and Implementation
The heavyweight parts of lightweight languages
History of compiler development
CSE341: Programming Languages Lecture 22 OOP vs
Computational Thinking in the Classroom
Compiler Construction
11/14/2018 Reflections From a Happy MOOC Instructor Dan Grossman Department of Computer Science & Engineering University of Washington SPLASH-E October.
Rice COMP Alum Spends 14 Years and Counting Posing as a PL Professor
“just-in-time” compilation (JIT) technique prepared by - Harshada Hole
Foundations of Programming Languages – Course Overview
Final Review In Text: Chapters 1-3, 5-11,
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 22 OOP vs
CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Autumn 2018.
Foundations of Programming Languages – Course Overview
Final Review In Text: Chapters 1-3, 5-10,
Final Review In Text: Chapters 1-3, 5-12,
CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Spring 2016.
CSE341: Programming Languages Lecture 26 Course Victory Lap
6.001 SICP Variations on a Scheme
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Autumn 2017.
CSE341: Programming Languages Lecture 22 OOP vs
Final Review In Text: Chapters 1-3, 5-16.
topics interpreters meta-linguistic abstraction eval and apply
Midterm Review In Text: Chapters 1-3, 5-11, 15.
CSE341: Programming Languages Lecture 22 OOP vs
Optimizing Compilers CISC 673 Spring 2009 Course Overview
Brett Wortzman Summer 2019 Slides originally created by Dan Grossman
CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Spring 2019.
CSE341: Programming Languages Lecture 22 OOP vs
CSE341: Programming Languages Lecture 26 Course Victory Lap
Presentation transcript:

11/16/2018 The PL Part of CS2013 Dan Grossman Department of Computer Science & Engineering University of Washington SPLASH-E October 28, 2013

Before we dive in… History in 1 line: CS2001 generally reviled by the PL community Much work by others to lay groundwork to “fix it” If you don’t like CS2013, it’s my fault  Don’t fret over “what is PL” in “Body of Knowledge” “PL” includes lots of “programming” and all of “compilers and run-time systems”… That’s “good” if selfish about the writing Less “good” if selfish about the hours But the steering committee was thankfully not selfish Experts will never be happy  Imagine a department with 5 CS faculty, none in PL Curriculum must be implementable and [only] a bit forward-looking October 28, 2013 Grossman: PL in CS2013

Acknoweldgements, part 1 Started early with a diverse committee of reasonable size Result much better than I could have done alone Kim Bruce Curt Clifton Ernesto Cuadros-Vargas Kathi Fisler Kathleen Fisher Stephen Freund Matthew Hertz Johan Jeuring Doug Lea Simon Thompson October 28, 2013 Grossman: PL in CS2013

Acknowledgments, part 2 Then many fresh eyes to avoid (?) committee-speak Guilt-trip emails from me and public-comment periods Alex Aiken Ron Cytron Tony Hosking James Noble Jens Palsberg Benjamin Pierce Michael Scott Michelle Strout Stephanie Weirich Steve Zdancewic … October 28, 2013 Grossman: PL in CS2013

High-level goals Language design, use, and semantics side: Less OO-focused Encapsulation not only a sub-topic of OOP Benefits of avoiding side-effects, using closures Modern parlance, understanding, and breadth No “compiled vs. interpreted languages” Rational arguments on static vs. dynamic typing Language implementation side: Program analysis for more than compiler optimization Increasing importance/sophistication of run-time systems Matter of principle + inclusiveness + timeliness: No PL mentioned by name in Body of Knowledge October 28, 2013 Grossman: PL in CS2013

Interactions All of OOP, FP, and Event-Driven is in PL But recursion, decomposition, abstraction is in SDF Because Body of Knowledge won’t “pick a paradigm for CS1” Concurrency and parallelism mostly elsewhere (PD and SF) Committee convinced me to add a PL unit for things like actors Of course, PL touches in everything in computer science  October 28, 2013 Grossman: PL in CS2013

The “core” pieces FP First-class functions + lexically scoped environments Mutation-free programming OOP As an abstraction mechanism Subclassing Event-driven Program Representation: Code is data “Basic Type Systems”: what they do [not] do “Basic Translation Execution”: What a compiler/interpreter/run-time does, but not how to implement one Key details like how recursion is implemented October 28, 2013 Grossman: PL in CS2013

My one axe to grind Matrix of operations and data variants Cf. “the expression problem” Apologies if this came out “how Grossman teaches it” eval toString hasZero … Int Add Negate October 28, 2013 Grossman: PL in CS2013

Elective != unimportant, part 1 Help modernize “the compilers course” While acknowledging lexing/parsing still exists Separate code generation from static analysis New run-time system unit with GC, JITs, VMs Mostly aspirational at this point?? Would love to discuss how to make this happen October 28, 2013 Grossman: PL in CS2013

Elective != unimportant, part 2 “PL side” has units that justify foundational treatment… Formal semantics, type systems, etc. … and units that justify “advanced programming”… Control operators, laziness, macros, mixins, … Reflects a big-tent there-are-many-good-courses view Now let’s fight over “better” with course exemplars and reusable materials October 28, 2013 Grossman: PL in CS2013

In the end… SIGPLAN written SIGPLAN and broader community approved Surely not perfect Don’t ask the cook how the soup tastes  How can we use this to best influence courses/curricula? How can we best prepare the field for an even better curriculum in 2023? Need to successfully connect advances to the classroom! October 28, 2013 Grossman: PL in CS2013