Programming Languages Dan Grossman 2013

Slides:



Advertisements
Similar presentations
Programming Languages Section 1 1 Programming Languages Section 1. SML Fundamentals Xiaojuan Cai Spring 2015.
Advertisements

Programming Languages Xiaojuan Cai
CSE341: Programming Languages Lecture 28 Victory Lap Dan Grossman Fall 2011.
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Fall 2011.
CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Spring 2013.
CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Winter 2013.
Introduction to Ruby CSE 413 Autumn 2008 Credit: Dan Grossman, CSE341.
CSC207 Software Design Summer 2011 Lecturer: Hesam C. Esfahani
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Spring 2013.
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
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Spring 2016.
CSE341: Programming Languages Lecture 11 Type Inference
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Lecture 3 Local Bindings; Options; Benefits of No Mutation Dan Grossman Winter 2013.
CSC207 Fall 2016.
Programming Languages Dan Grossman 2013
Programming Languages Dan Grossman 2013
INTERMEDIATE PROGRAMMING WITH JAVA
CSE 341 Section 1 (9/28) With thanks to Dan Grossman, et. al. from previous versions of these slides.
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Winter 2013.
CSE 341 Section 1 (9/28) With thanks to Dan Grossman, et. al. from previous versions of these slides.
CSC 221: Computer Programming I Spring 2010
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Spring 2017.
CSC 221: Computer Programming I Fall 2005
CSE341: Programming Languages Lecture 3 Local Bindings; Options; Benefits of No Mutation 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.
September 27 – Course introductions; Adts; Stacks and Queues
CSE 341: Programming Languages Section 1
CSE341: Programming Languages Section 1
Learning to Program in Python
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
Modular Course Overview Algebra and Trig. I
CSE341: Programming Languages Lecture 21 Dynamic Dispatch Precisely, and Manually in Racket Dan Grossman Autumn 2018.
CSE341: Programming Languages Section 1
CSE341: Programming Languages Lecture 3 Local Bindings; Options; Benefits of No Mutation Dan Grossman Spring 2013.
CSE341: Programming Languages Lecture 3 Local Bindings; Options; Benefits of No Mutation Dan Grossman Spring 2016.
CSE 341: Programming Languages Section 1
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Autumn 2018.
CSE341: Programming Languages Lecture 3 Local Bindings; Options; Benefits of No Mutation Dan Grossman Autumn 2018.
CSE341: Programming Languages Lecture 11 Type Inference
Winter 2018 With thanks to: Dan Grossman / Eric Mullen
CSE341: Programming Languages Lecture 3 Local Bindings; Options; Benefits of No Mutation Dan Grossman Winter 2018.
CSE 331 Software Design & Implementation
Introduction In today’s lesson we will look at: why Python?
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE 331 Software Design & Implementation
Adapted from slides by Nicholas Shahan, Dan Grossman, and Tam Dang
CSE341: Programming Languages Lecture 26 Course Victory Lap
Dan Grossman / Eric Mullen Autumn 2017
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Spring 2019.
CSE341: Programming Languages Lecture 3 Local Bindings; Options; Benefits of No Mutation Dan Grossman Spring 2019.
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Lecture 3 Local Bindings; Options; Benefits of No Mutation Dan Grossman Autumn 2017.
Brett Wortzman Summer 2019 Slides originally created by Dan Grossman
Brett Wortzman Summer 2019 Slides originally created by Dan Grossman
Human vs. Automated Coding Style Grading in Computing Education
CSE341: Programming Languages Lecture 11 Type Inference
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:

Programming Languages Dan Grossman 2013 [Placeholder for] Course Motivation

What this course is about 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, C#, Python, … Big focus on functional programming Not using mutation (assignment statements) (!) Using first-class functions (can’t explain that yet) But many other topics too Jan-Mar 2013 Dan Grossman, Programming Languages

Assumed background Not an introductory programming course Assume you have at least 1-2 programming courses Not an advanced course on programming langauges Won’t assume you are an experienced programmer Somewhere in the middle… Jan-Mar 2013 Dan Grossman, Programming Languages

Things I assume you know (a little) Variables, conditionals (if), loops, arrays Recursion (okay if lack a little confidence for now) Implementation vs. interface (abstraction, modularity) Possibly/probably using objects-oriented programming Basic data structures: linked lists, binary trees Dynamic-dispatch Also known as method overriding, subclassing, … But not needed for first 2/3 of course and then will review Jan-Mar 2013 Dan Grossman, Programming Languages

Any particular language Occasionally compare to Java in optional videos (not on homework) If know C#, can surely follow right along Will more rarely compare to C in optional videos (not on homework) Can be very useful if you understand some C (or if you learn C later) It is okay if you mostly know Python or Javascript or… What matters are the concepts on the previous slide Really will “start programming over from the beginning” Moving way too fast unless you have programmed some before Jan-Mar 2013 Dan Grossman, Programming Languages

Dan Grossman, Programming Languages Why learn this? This is the “normal” place for course motivation Why learn this material? But in my experience, we don’t have enough shared vocabulary So 2-week delay on motivation for functional programming I promise full motivation: delay is worth it (Will motivate immutable data at end of section 1) Jan-Mar 2013 Dan Grossman, Programming Languages

Dan Grossman, Programming Languages My claim 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) http://www.imdb.com/title/tt0087538/ http://www.imdb.com/title/tt1155076/ ] Jan-Mar 2013 Dan Grossman, Programming Languages

Dan Grossman, Programming Languages A strange environment Next 4-5 weeks will use ML language Emacs editor Read-eval-print-loop (REPL) for evaluating programs You need to get things installed and configured See written instructions (read carefully; feedback welcome) Optional: videos showing Windows installation Only then can you focus on the content of Homework 1 Working in strange environments is a CS life skill Jan-Mar 2013 Dan Grossman, Programming Languages

Dan Grossman, Programming Languages Enough text already Subsequent lectures will write code Plus switch to slides for key concepts Plus “in-video questions” Much better than these “introduction” videos Jan-Mar 2013 Dan Grossman, Programming Languages