Programming Languages Xiaojuan Cai

Slides:



Advertisements
Similar presentations
CSE341: Programming Languages Lecture 16 Datatype-Style Programming With Lists or Structs Dan Grossman Winter 2013.
Advertisements

Intro to CIT 594
OBJECT ORIENTED PROGRAMMING M Taimoor Khan
CSE341: Programming Languages Lecture 28 Victory Lap Dan Grossman Fall 2011.
CSE341: Programming Languages Lecture 8 Lexical Scope and Function Closures 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.
CSE341: Programming Languages Lecture 2 Functions, Pairs, Lists Dan Grossman Fall 2011.
Intro to CIT 594
Programming Language Paradigms: summary. Object-oriented programming Objects are the fundamental building blocks of a program. Interaction is structured.
September 5, Concepts of Programming Languages Hongwei Xi Comp. Sci. Dept. Boston University.
CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++
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 26 Course Victory Lap Dan Grossman Winter 2013.
CSE341: Programming Languages Lecture 11 Type Inference Dan Grossman Winter 2013.
Intro to CIT 594
Introduction to Ruby CSE 413 Autumn 2008 Credit: Dan Grossman, CSE341.
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
CSE 1340 Introduction to Computing Concepts Class 2.
CS 3305 Course Overview. Introduction r Instructor: Dr Hanan Lutfiyya r Office: MC 355 r hanan at csd dot uwo ca r Office Hours: m Drop-by m Appointment.
CSE332: Data Abstractions Lecture 26: Course Victory Lap Dan Grossman Spring 2012.
Objected Oriented Programming & Design JAVA Shishir Gupta (704) (704)
Object Oriented Programming (OOP) Design Lecture 1 : Course Overview Bong-Soo Sohn Associate Professor School of Computer Science and Engineering Chung-Ang.
Object Oriented Programming (FIT-II) J. H. Wang Feb. 20, 2009.
Object Oriented Programming (OOP) Design Lecture 1 : Course Overview Bong-Soo Sohn Assistant Professor School of Computer Science and Engineering Chung-Ang.
Intro to CIT 594
Object Oriented Programming (FIT-II) J. H. Wang Jan. 31, 2008.
CSE 413 Languages & Implementation Hal Perkins Autumn 2012 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1.
C Programming Lecture 1 : Introduction Bong-Soo Sohn Associate Professor School of Computer Science and Engineering Chung-Ang University.
Interfaces, Mixins, & Multiple Inheritance CSE 413 Autumn 2008 Credit: Dan Grossman, CSE341, Sp08.
Data Structures and Algorithms in Java AlaaEddin 2012.
CSE341: Programming Languages Lecture 4 Records, Datatypes, Case Expressions Dan Grossman Spring 2013.
Programming Languages Dan Grossman 2013 Optional: Course-Motivation Introduction.
CSE341: Programming Languages Lecture 26 Course Victory Lap
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Interlude: Course Motivation
CSE341: Programming Languages Lecture 11 Type Inference
Programming Languages Dan Grossman 2013
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
CSc 020: Programming Concepts and Methodology II
Programming Languages Dan Grossman 2013
Programming Languages Dan Grossman 2013
CSE341: Programming Languages Interlude: Course Motivation
CSE 341: Programming Languages Section 1
CSE341: Programming Languages Interlude: Course Motivation
CSE 341: Programming Langs
CSE341: Programming Languages Section 1
CSE341: Programming Languages Lecture 26 Course Victory Lap
Programming Languages
CSE341: Programming Languages Section 1
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Interlude: Course Motivation
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 26 Course Victory Lap
SE-1021 Software Development 2
Programming Languages
CSE341: Programming Languages Lecture 11 Type Inference
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 11 Type Inference
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 26 Course Victory Lap
Presentation transcript:

Programming Languages Xiaojuan Cai

Programming LanguagesSection 0 2 Do you know How many programming languages in the world? There are strange(weird) programming languages 99 Bottles of Beer 99 Bottles of Beer

Programming LanguagesSection 0 3 Roadmap Course overview Policy

Programming LanguagesSection 0 4 What is the best kind of car? What is the best PL?

Programming LanguagesSection 0 5 Cars tell us Cars are used for rather difference things. You can not be a great driver if you only ever drive one car. A good mechanic understands how “cars” work A good mechanical engineer knows how to design better ones To learn how car pieces interact, start with a classic design rather than the latest model.

Programming LanguagesSection 0 6 Are all cars the same? They all have steering wheels, brakes, windows, headlights, etc. still uncomfortable to learn a new one Can you be a great driver if you only ever drive one car? And maybe PLs are more like cars, trucks, boats, and bikes So are all PLs really the same…

Programming LanguagesSection 0 7 Are all languages the same? Yes: [Church-Turing thesis] Java, ML, and a language with one loop and three infinitely-large integers are “the same” Yes: Same fundamentals reappear: variables, abstraction, one- of types, recursive definitions, … No: The primitive/default in one language is awkward in another

Programming LanguagesSection 0 8 This course will show three languages with different paradigms; introduce a lot of fundamental concepts and key points; make you a better programmer by learning to think about software in “PL” way; give you the mental tools and experience you need for a lifetime of confidently picking up new languages and ideas.

Programming LanguagesSection 0 9 Five different things 1. Syntax 2. Semantics 3. Idioms 4. Libraries 5. Tools These are 5 separate issues In practice, all are essential for good programmers Many people confuse them, but shouldn’t

Programming LanguagesSection 0 10 Course overview Many essential concepts relevant in any programming language And how these pieces fit together Big focus on functional programming Not using mutation (assignment statements) (!) Using first-class functions But many other topics too

Programming LanguagesSection 0 11 The languages together ML: polymorphic types, pattern-matching, abstract types Racket: dynamic typing, “good” macros, minimalist syntax Ruby: classes but not types, very OOP, mixins dynamically typedstatically typed functionalRacketSML object-orientedRubyJava/C#

Programming LanguagesSection 0 12 Functional Programming Mutation is discouraged Higher-order functions are very convenient One-of types via constructs like datatypes 1. These features are invaluable for correct, elegant, efficient software 2. Functional languages have always been ahead of their time

Programming LanguagesSection 0 13 Ahead of their time All these were dismissed as “beautiful, worthless, slow things PL professors make you learn” Garbage collection (Java didn’t exist in 1995, PL courses did) Generics ( List in Java, C#), much more like SML than C++ Higher-order functions (Ruby, Javascript, C#, …) Type inference (C#, Scala, …) …

Programming LanguagesSection 0 14 Is this real programming? The way we use ML/Racket/Ruby can make them seem almost “silly” “Real” programming needs file I/O, string operations, floating-point, graphics, project managers, testing frameworks, threads, build systems, … Many elegant languages have all that and more Including Racket and Ruby

Programming LanguagesSection 0 15 Course overview Special thanks to Prof. Dan Grossman. Programming languages Coursera by Dan Grossman (about 65,000 people registered this course) Dan Grossman Professor, University of Washington

Programming LanguagesSection 0 16 Course data (Coursera, Jan 2013 session, provided by Prof. Grossman “Registered”: 65,000 totally irrelevant Clicked play in first 2 weeks: 27,000 Watched an hour of video: 12,000 like coming to first day? Turned in 1st homWework: 4,000 Turned in 5 th homework: 2,100 attrition doesn’t stop “Passed”: 1,716 Fan mail/posts: 300 Consistent with “hard” course in Coursera!

Programming LanguagesSection 0 17 Roadmap Course overview Policy

Programming LanguagesSection 0 18 Instructor and TAs 蔡小娟 (Instructor) Office: Software building 刘立 Office: Dianxin building

Programming LanguagesSection 0 19 Policy Final score = 40% homework + 60% final exam Exams cover topics harder to re-enforce with “just programming” because this is not just a programming course

Programming LanguagesSection 0 20 More on homework 7 assignments (for the first 16 lectures) Doing the homework involves: Understanding the concepts being addressed Writing code demonstrating understanding of the concepts Testing your code to ensure you understand and have correct programs “Playing around” with variations, incorrect answers, etc.

Programming LanguagesSection 0 21 More on homework Every word you submit should be your own! Cheating: copy codes from other sources. You will directly get a fail score.

Programming LanguagesSection 0 22 “ Sleep now, Dreams will come out; Study now, Dreams will come true.”