What Is Computer Science? The Scientific Study of Computation. Expressing or Describing

Similar documents
CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106

COSE212: Programming Languages. Lecture 0 Course Overview

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES

What is programming? Elements of Programming Languages. From machine code to programming languages. What is a programming language?

CSE341: Programming Languages Lecture 26 Course Victory Lap. Dan Grossman Spring 2016

CS383 PROGRAMMING LANGUAGES. Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University

CSc 372 Comparative Programming Languages

Programming Languages 2nd edition Tucker and Noonan"

Concepts of Programming Languages

Languages and Compilers

CS 242. Fundamentals. Reading: See last slide

Introduction to Computer Science I

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.

CIS 500 Software Foundations Fall December 6

Administrivia. Existential Types. CIS 500 Software Foundations Fall December 6. Administrivia. Motivation. Motivation

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

15-411/ Compiler Design

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN

! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented

CMPSCI 250: Introduction to Computation. Lecture #1: Things, Sets and Strings David Mix Barrington 22 January 2014

Type Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters

CSc 520. Course Outline (Subject to change) Course Outline (Subject to change)... Principles of Programming Languages. Christian Collberg

IA010: Principles of Programming Languages

INTRODUCTION PRINCIPLES OF PROGRAMMING LANGUAGES. Norbert Zeh Winter Dalhousie University 1/10

Paradigms of computer programming


Reasoning About Programs Panagiotis Manolios

CS 3110 Lecture 1 Course Overview

Concepts in Programming Languages

Organization of Programming Languages (CSE452) Why are there so many programming languages? What makes a language successful?

Seminar in Programming Languages

LECTURE 1. Overview and History

PLAGIARISM. Administrivia. Course home page: Introduction to Programming Languages and Compilers

Introduction to Programming Languages and Compilers. CS164 11:00-12:00 MWF 306 Soda

Com S 541. Programming Languages I

! Broaden your language horizons. ! Study how languages are implemented. ! Study how languages are described / specified

Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science)

Programmiersprachen (Programming Languages)

Outline. Programming Languages 1/16/18 PROGRAMMING LANGUAGE FOUNDATIONS AND HISTORY. Current

Closures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming

Lecture 1: Course Introduction

G Programming Languages - Fall 2018

Programming Paradigms

Programming (Econometrics)

Lecture 1: Course Introduction

Programming Language Design and Implementation. Cunning Plan. Your Host For The Semester. Wes Weimer TR 9:30-10:45 MEC 214. Who Are We?

CS252 Advanced Programming Language Principles. Prof. Tom Austin San José State University Fall 2013

Lecture 1: Overview

COMP 201: Principles of Programming

CSCI 3136 Principles of Programming Languages

CS6202: Advanced Topics in Programming Languages and Systems Lecture 0 : Overview

Welcome to Introduction to Computer Science I

INSTITUTE OF AERONAUTICAL ENGINEERING

G Programming Languages Spring 2010 Lecture 1. Robert Grimm, New York University

Programming language design and analysis

CS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Dan Grossman Spring 2011

CS 4349 Lecture August 21st, 2017

Spring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques

Course Syllabus. Programming Language Paradigms. Spring - DIS Copenhagen. Semester & Location: Elective Course - 3 credits.


Pierce Ch. 3, 8, 11, 15. Type Systems

St. MARTIN S ENGINEERING COLLEGE Dhulapally, Secunderabad

G Programming Languages - Fall 2012

Programming Language Concepts 1982, 1987, Outline. Period

Simply-Typed Lambda Calculus

MIDTERM EXAMINATION - CS130 - Spring 2005

Formal Systems and their Applications

Concepts of Programming Languages

1. Abstract syntax: deep structure and binding. 2. Static semantics: typing rules. 3. Dynamic semantics: execution rules.

CMSC 330: Organization of Programming Languages. Functional Programming with OCaml

Programming Languages, Summary CSC419; Odelia Schwartz

Programming Languages FILS Andrei Vasilateanu

Functional Programming. Big Picture. Design of Programming Languages

Programming Languages

Welcome to CS 135 (Winter 2018)

Programming Languages: Lecture 11

More Lambda Calculus and Intro to Type Systems

CS 240 Fall Mike Lam, Professor. Just-for-fun survey:

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

CS 200, Section 1, Programming I, Fall 2017 College of Arts & Sciences Syllabus

More Lambda Calculus and Intro to Type Systems

CMSC 330: Organization of Programming Languages

CS A331 Programming Language Concepts

cmpt 440/821 Advanced Topics in Programming Languages

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

CSE 505 Graduate PL. Fall 2013

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164)

Functional Programming Principles in Scala. Martin Odersky

Lecture 5: The Untyped λ-calculus

At build time, not application time. Types serve as statically checkable invariants.

CSCI 201L Syllabus Principles of Software Development Spring 2018

Introduction to Nate Foster Spring 2018

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design

CS-XXX: Graduate Programming Languages. Lecture 9 Simply Typed Lambda Calculus. Dan Grossman 2012

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Why study Programming Language Concepts? Chapter One. Language Evaluation Criteria. Programming Domains. Readability Writability Reliability Cost

Goal. CS152: Programming Languages. Lecture 15 Parametric Polymorphism. What the Library Likes. What The Client Likes. Start simpler.

Syllabus of ENPM 691: Secure Programming in C

Foundations. Yu Zhang. Acknowledgement: modified from Stanford CS242

Transcription:

What Is Computer Science? The Scientific Study of Computation CMPSCI 630: Programming Languages Introduction Spring 2009 (with thanks to Robert Harper) Expressing or Describing Automating Understanding or Reasoning About 1 What Is Our Most Fundamental... The History of Computer Science Tool? Contribution? Activity? My answer is probably obvious! Parallels or Is demarcated by or Has advanced due to or Has been driven primarily by or Consists of little other than... 2 Development of Programming Languages! 3 Some Historical Milestones Some More Historical Milestones Machine language Prolog Assembly language C FORTRAN Simula Lisp C++ Algol ML 4 5

Still More Historical Milestones A Brief History of CMPSCI 630 Ada Pre-Java (the bad old days) Scheme Early Java Haskell Middle Java Java Harper and POPL C# Separation and Scala 6 7 Why Study Programming Languages? Programming is an explanatory activity. Why Study Programming Languages? Therefore the language we use matters enormously. To yourself, now and in the future. How to write a program to solve a problem? To other developers and maintainers. How to express your assumptions and guarantees? To the machine! How to document the structure of a system? 8 9 Why Study Programming Languages? There is (or ought to be) a close relationship between The Science of Programming Languages You may have heard that all programming languages are equal. the code, which is executable, and its properties, which are descriptions of its behavior. Good languages make it easier to establish, verify, and maintain the relationship between code and its properties. All familiar languages are Turing equivalent they express the same set of computable functions as each other. Therefore (?) there s no difference between them. It s all a matter of taste. 10 11

The Science of Programming Languages Yet we all know that some languages are more equal than others. Do you want to build web pages in assembly language? Do you want to build a device driver in Perl? Do you want to use C as your markup language? The Science of Programming Languages There is an irreducible subjective element. Surface syntax: 3 + 2 vs. +(3, 2) or (+ 3 2) or (3, 2)+. Resemblance to familiar languages and notation. Development environment: structure editors vs. text editors. Ease of use ; Power ; Performance 12 13 The Science of Programming Languages There is also a scientific basis for programming languages whose primary tools are The Goal Of This Course The goal of CMPSCI 630 is to introduce the fundamental principles of programming language design and implementation. Type theory. Techniques for structuring languages to ensure safety and modularity of programs. Operational semantics. Techniques for describing the execution behavior of programs, at various levels of abstraction. Mathematical logic. Techniques for specifying and verifying programs. 14 Emphasis on rigor and elegance. Emphasis on both theory and practice. We will model a wide variety of programming concepts in the framework of type theory and operational semantics. 15 Theoretical foundations. Syntactic structure. Inductive definitions. Concrete syntax: the strings you type. Structural induction. Abstract syntax: the deep structure of a language. 1. First-order: tree structure. 2. Higher-order: binding and scope. 16 17

Semantics of languages. Language concepts: Static semantics, or type systems. Higher-order functions. Dynamic semantics, or execution rules. Abstract machines. What is a safe language? Imperative programming. 18 19 More language concepts: Yet more language concepts: Continuations and concurrency. Modularity and data abstraction. Dynamic typing. Polymorphism and parametricity. Lazy evaluation. Inheritance and subtyping. Parallelism. 20 21 Some Things We Won t Discuss What s CMPSCI 630 Like? Taxonomy. Not a trip to the zoo. Not a survey of the Top Ten PL s. Not a way to collect C.V. items. It will treat both basic concepts and a real instance. Basic concepts via formalism and abstraction Real instance via an interesting new language: Scala Emphasis on rigor, clarity, and elegance: Not bound by flaws or limit of specific languages But can draw conclusions about specific languages 22 23

What Will I Get Out of CMPSCI 630? After taking this course you should be able to: What Will I Get Out of CMPSCI 630? After taking this course you should also be able to: Confidently critique existing languages Reflect more deeply on programming style Define and analyze your own language Write better programs (?) Prove properties of languages Carry out research on programming languages! Avoid common mistakes and pitfalls 24 25 What s CMPSCI 630 Like? People Most of all, it s fun! Professor: Elegant interplay between theory and practice. Lots of interesting and novel ideas. Plenty of scope for further work. Jack Wileden 206 Computer Science Building wileden@cs.umass.edu Hours: Monday 3:30-4:30 & Thursday 2:30-3:30 or by appointment Teaching Assistant / Grader: TBA 26 27 Web Pages The course web site is the authoritative source for all course information. Course syllabus, including slides and notes. Assignments, due dates, submission instructions. Announcements. Primary Textbook Practical Foundations for Programming Languages by Robert Harper. Working draft available on course web site. Subject to change as the semester progresses, so doled out piecemeal. Course policies URL: http://www-edlab.cs.umass.edu/cs630. 28 29

Scala Books Scala By Example by Martin Odersky. Expect six assignments. Homework Assignments Scala Language Specification by Martin Odersky. Approximately two weeks each. These and other Scala references available on course web site. Some written assignments Some programming assignments Some may be both 30 31 Grades Academic Integrity Homework: 70%. Roughly half for written, half for programming. Project: 30%. More details on this soon. You must read the material on the web site to receive a grade in this course! Bottom line: all work must be solely your own. Must acknowledge you ve read the rules; part of first homework assignment (Homework 0 see the course web site). 32 33 Any Questions?? 34