CSCI 3136 Principles of Programming Languages

Size: px
Start display at page:

Download "CSCI 3136 Principles of Programming Languages"

Transcription

1 CSCI 3136 Principles of Programming Languages Summer 2013 Faculty of Computer Science Dalhousie University 1 / 100

2 CSCI 3136 Principles of Programming Languages Summer 2013 Aminul Islam Faculty of Computer Science Dalhousie University 2 / 100

3 Basic Course Information 3 / 100

4 Basic Course Information Web: 4 / 100

5 Basic Course Information Web: Class: Mon & Wed 12:05-13:25 at CS / 100

6 Basic Course Information Web: Class: Mon & Wed 12:05-13:25 at CS 127 Lab: Fri 12:05-13:25 at CS Lab 3 6 / 100

7 Basic Course Information Web: Class: Mon & Wed 12:05-13:25 at CS 127 Lab: Fri 12:05-13:25 at CS Lab 3 Instructor: Aminul Islam (islam@cs.dal.ca) Office: Room # 437, The Goldberg CS Building 7 / 100

8 Basic Course Information Web: Class: Mon & Wed 12:05-13:25 at CS 127 Lab: Fri 12:05-13:25 at CS Lab 3 Instructor: Aminul Islam (islam@cs.dal.ca) Office: Room # 437, The Goldberg CS Building Office Hour: Fri 11:00-12:00 8 / 100

9 Textbooks and Other Material 9 / 100

10 Textbooks and Other Material Class slides are available online 10 / 100

11 Textbooks and Other Material Class slides are available online Recommended text: Michael L. Scott. Programming Language Pragmatics, 3rd edition / 100

12 Textbooks and Other Material Class slides are available online Recommended text: Michael L. Scott. Programming Language Pragmatics, 3rd edition 2009 More relevant books listed on the course web site (some of them are available on-line) 12 / 100

13 Textbooks and Other Material Class slides are available online Recommended text: Michael L. Scott. Programming Language Pragmatics, 3rd edition 2009 More relevant books listed on the course web site (some of them are available on-line) Other links can be found at course web site 13 / 100

14 Evaluation and Plagiarism Policy Evaluation Plagiarism policy 14 / 100

15 Evaluation Evaluation and Plagiarism Policy 40% assignments (Five) Plagiarism policy 15 / 100

16 Evaluation and Plagiarism Policy Evaluation 40% assignments (Five) 20% midterm exam Plagiarism policy 16 / 100

17 Evaluation and Plagiarism Policy Evaluation 40% assignments (Five) 20% midterm exam 40% final exam Plagiarism policy 17 / 100

18 Evaluation and Plagiarism Policy Evaluation 40% assignments (Five) 20% midterm exam 40% final exam Plagiarism policy Assignments and exams must be done individually 18 / 100

19 Evaluation and Plagiarism Policy Evaluation 40% assignments (Five) 20% midterm exam 40% final exam Plagiarism policy Assignments and exams must be done individually Any use of reference material (book, web,... ) must be acknowledged 19 / 100

20 Evaluation and Plagiarism Policy Evaluation 40% assignments (Five) 20% midterm exam 40% final exam Plagiarism policy Assignments and exams must be done individually Any use of reference material (book, web,... ) must be acknowledged According to Faculty policy, any suspected case of plagiarism is referred to the Academic Integrity Officer and may be forwarded to the Senate Discipline Committee. Details at http: // 20 / 100

21 How is This Course Useful? 21 / 100

22 How is This Course Useful? Help choose the most appropriate language for the job, evaluate trade-offs 22 / 100

23 How is This Course Useful? Help choose the most appropriate language for the job, evaluate trade-offs Make it easier to learn new languages 23 / 100

24 How is This Course Useful? Help choose the most appropriate language for the job, evaluate trade-offs Make it easier to learn new languages Learn to simulate useful features in languages that lack them 24 / 100

25 How is This Course Useful? Help choose the most appropriate language for the job, evaluate trade-offs Make it easier to learn new languages Learn to simulate useful features in languages that lack them? 25 / 100

26 Course Outline Contents Introduction Lexical analysis and automata theory Syntactic Analysis and Context-Free Grammars Semantic analysis Names, scopes, and binding Control flow Data types and object-oriented programming Specialized topics Tutorials Perl Scheme/Lisp Prolog 26 / 100

27 Course Outline Contents Introduction Programming language, History, Paradigms Implementation Lexical analysis and automata theory Syntactic Analysis and Context-Free Grammars Semantic analysis Names, scopes, and binding Control flow Data types and object-oriented programming Specialized topics Tutorials Perl Scheme/Lisp Prolog 27 / 100

28 We know Something in Common 28 / 100

29 We know Something in Common C 29 / 100

30 We know Something in Common C C++ 30 / 100

31 We know Something in Common C C++ C# 31 / 100

32 We know Something in Common C C++ C# Java 32 / 100

33 We know Something in Common C C++ C# Java JavaScript 33 / 100

34 We know Something in Common C C++ C# Java JavaScript Perl 34 / 100

35 We know Something in Common C C++ C# Java JavaScript Perl PHP 35 / 100

36 We know Something in Common C C++ C# Java JavaScript Perl PHP Python 36 / 100

37 We know Something in Common C C++ C# Java JavaScript Perl PHP Python Ruby 37 / 100

38 We know Something in Common C C++ C# Java JavaScript Perl PHP Python Ruby SQL 38 / 100

39 We know Something in Common C C++ C# Java JavaScript Perl PHP Python Ruby SQL According to langpop.com, 10 most cited programming languages 39 / 100

40 Principles of Programming Language 40 / 100

41 Principles of Programming Language? 41 / 100

42 Principles of Programming Language? Human Language Programming Language 42 / 100

43 Principles of Programming Language? Human Language Vocabulary Programming Language 43 / 100

44 Principles of Programming Language? Human Language Vocabulary Programming Language Key words 44 / 100

45 Principles of Programming Language? Human Language Programming Language Grammar 45 / 100

46 Principles of Programming Language? Human Language Programming Language Grammar Grammar 46 / 100

47 Principles of Programming Language? Human Language Programming Language Proper Name/Noun (e.g., Gosling is the...) 47 / 100

48 Principles of Programming Language? Human Language Programming Language Proper Name/Noun (e.g., Gosling is the...) Variable Name (e.g., int x = 3;) 48 / 100

49 Principles of Programming Language? Human Language Programming Language / 100

50 Principles of Programming Language? Human Language Programming Language / 100

51 Principles of Programming Language? Human Language Vocabulary Grammar Proper Name/Noun (e.g., Gosling is the...)... Programming Language Key words Grammar Variable Name (e.g., int x = 3;) / 100

52 Difference between Human Language and Programming Language Colorless green ideas sleep furiously. John is a married bachelor. 52 / 100

53 Brief history of Programming Languages 53 / 100

54 Machine language Brief history of Programming Languages 54 / 100

55 Machine language Brief history of Programming Languages Hello world example in Machine language / 100

56 Assembly language Brief history of Programming Languages 56 / 100

57 Brief history of Programming Languages Assembly language Hello world example in Assembly language for the IBM-PC (i386) dosseg.model small.stack 100h.data hello_message db Hello, World!,0dh,0ah, $.code main proc mov mov ds,ax mov ah,9 mov dx,offset hello_message int 21h mov ax,4c00h int 21h main endp 57 end / 100 main

58 Brief history of Programming Languages FORTRAN (1957), COBOL (1959), BASIC (1964), C (1972) 58 / 100

59 Brief history of Programming Languages FORTRAN (1957), COBOL (1959), BASIC (1964), C (1972) Hello world example in FORTRAN program helloworld write (*,*) Hello, world. end program helloworld 59 / 100

60 Brief history of Programming Languages LISP (1959) Scheme (1975), Common Lisp (1984) 60 / 100

61 Brief history of Programming Languages Hello world example in LISP LISP (1959) Scheme (1975), Common Lisp (1984) (DEFUN HELLO-WORLD () (PRINT (LIST HELLO WORLD))) 61 / 100

62 Brief history of Programming Languages Prolog (1973) 62 / 100

63 Prolog (1973) Brief history of Programming Languages Hello world example in Prolog?- write( Hello world. ), nl. Hello world. true.?- 63 / 100

64 Brief history of Programming Languages Simula (1967), Smalltalk (1980), C++ (1985), Java (1995), C# (2002) 64 / 100

65 Brief history of Programming Languages Hello world example in Java class HelloWorldApp { public static void main(string[] args){ System.out.println("Hello World!"); } } Simula (1967), Smalltalk (1980), C++ (1985), Java (1995), C# (2002) 65 / 100

66 Brief history of Programming Languages Perl (1987), Python (1990s), JavaScript (1995), PHP (1995), 66 / 100

67 Programming Paradigms 67 / 100

68 Programming Paradigms Imperative programming 68 / 100

69 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL 69 / 100

70 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL Structured programming (ALGOL, Pascal, C) 70 / 100

71 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL Structured programming (ALGOL, Pascal, C) Object-oriented programming 71 / 100

72 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL Structured programming (ALGOL, Pascal, C) Object-oriented programming Smalltalk, C++, Java 72 / 100

73 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL Structured programming (ALGOL, Pascal, C) Object-oriented programming Smalltalk, C++, Java Functional programming 73 / 100

74 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL Structured programming (ALGOL, Pascal, C) Object-oriented programming Smalltalk, C++, Java Functional programming Lisp, Scheme, ML, Haskell 74 / 100

75 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL Structured programming (ALGOL, Pascal, C) Object-oriented programming Smalltalk, C++, Java Functional programming Lisp, Scheme, ML, Haskell Logic programming 75 / 100

76 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL Structured programming (ALGOL, Pascal, C) Object-oriented programming Smalltalk, C++, Java Functional programming Lisp, Scheme, ML, Haskell Logic programming Prolog, VisiCalc 76 / 100

77 Programming Paradigms Imperative programming assemblers, FORTRAN, BASIC, COBOL Structured programming (ALGOL, Pascal, C) Object-oriented programming Smalltalk, C++, Java Functional programming Lisp, Scheme, ML, Haskell Logic programming Prolog, VisiCalc 77 / 100

78 78 / 100

79 Why So Many Programming Languages? 79 / 100

80 Why So Many Programming Languages? Evolution 80 / 100

81 Why So Many Programming Languages? Evolution Special purpose 81 / 100

82 Why So Many Programming Languages? Evolution Special purpose Personal preference 82 / 100

83 Why So Many Programming Languages? Evolution Special purpose Personal preference What makes a programming language successful? 83 / 100

84 Why So Many Programming Languages? Evolution Special purpose Personal preference What makes a programming language successful? Expressive power 84 / 100

85 Why So Many Programming Languages? Evolution Special purpose Personal preference What makes a programming language successful? Expressive power Easy to learn 85 / 100

86 Why So Many Programming Languages? Evolution Special purpose Personal preference What makes a programming language successful? Expressive power Easy to learn Easy to implement 86 / 100

87 Why So Many Programming Languages? Evolution Special purpose Personal preference What makes a programming language successful? Expressive power Easy to learn Easy to implement Open-source 87 / 100

88 Why So Many Programming Languages? Evolution Special purpose Personal preference What makes a programming language successful? Expressive power Easy to learn Easy to implement Open-source Good compilers (e.g., FORTRAN) 88 / 100

89 Why So Many Programming Languages? Evolution Special purpose Personal preference What makes a programming language successful? Expressive power Easy to learn Easy to implement Open-source Good compilers (e.g., FORTRAN) Economics, patronage, inertia 89 / 100

90 Why So Many Programming Languages? Evolution Special purpose Personal preference What makes a programming language successful? Expressive power Easy to learn Easy to implement Open-source Good compilers (e.g., FORTRAN) Economics, patronage, inertia 90 / 100

91 {calculate greatest common divisor} program gcd(input, output); var i, j : integer; begin read(i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln(i); end.

92 {calculate greatest common divisor} program gcd(input, output); var i, j : integer; begin read(i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln(i); end.

93 {calculate greatest common divisor} program gcd(input, output); var i, j : integer; begin read(i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln(i); end.

94 {calculate greatest common divisor} program gcd(input, output); var i, j : integer; begin read(i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln(i); end.

95 {calculate greatest common divisor} program gcd(input, output); var i, j : integer; begin read(i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln(i); end.

96 {calculate greatest common divisor} program gcd(input, output); var i, j : integer; begin read(i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln(i); end.

97 {calculate greatest common divisor} program gcd(input, output); var i, j : integer; begin read(i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln(i); end. Implementation 97 / 100

98 {calculate greatest common divisor} program gcd(input, output); var i, j : integer; begin read(i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln(i); end. Compiler/ Interpreter Implementation 98 / 100

99 99 / 100

100 How is This Course Useful? Help choose the most appropriate language for the job, evaluate trade-offs Make it easier to learn new languages Learn to simulate useful features in languages that lack them? 100 / 100

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

INTRODUCTION PRINCIPLES OF PROGRAMMING LANGUAGES. Norbert Zeh Winter Dalhousie University 1/10 INTRODUCTION PRINCIPLES OF PROGRAMMING LANGUAGES Norbert Zeh Winter 2018 Dalhousie University 1/10 GOAL OF THIS COURSE 2/10 GOAL OF THIS COURSE Encourage you to become better programmers 2/10 GOAL OF THIS

More information

Concepts in Programming Languages

Concepts in Programming Languages Concepts in Programming Languages Marcelo Fiore Computer Laboratory University of Cambridge 2012 2013 (Easter Term) 1 Practicalities Course web page: with lecture

More information

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

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Topic I Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Chapter 1 of Programming languages: Design and implementation (3RD EDITION)

More information

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

Organization of Programming Languages (CSE452) Why are there so many programming languages? What makes a language successful? Organization of Programming Languages (CSE452) Instructor: Dr. B. Cheng Fall 2004 1 Why are there so many programming languages? Evolution -- we've learned better ways of doing things over time Socio-economic

More information

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

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN What languages do you know? CSC 326H1F, Programming Languages The usual suspects: C, C++, Java fine languages nearly the same Perhaps you've also learned some others? assembler Basic, Visual Basic, Turing,

More information

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

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design General Concepts Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design 1 Abstractions in Programming Languages Abstractions hide details that

More information

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

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES CS-3304 Introduction In Text: Chapter 1 & 2 COURSE DESCRIPTION 2 What will you learn? Survey of programming paradigms, including representative languages Language definition and description methods Overview

More information

Today. An Animated Introduction to Programming. Prerequisites. Computer programming

Today. An Animated Introduction to Programming. Prerequisites. Computer programming Today 1 2 3 4 Computer programming What is this course about? We re making several assumptions about you as a student. In particular, we assume that you have: Never taken a programming course before. Have

More information

CS 3304 Comparative Languages. Lecture 1: Introduction

CS 3304 Comparative Languages. Lecture 1: Introduction CS 3304 Comparative Languages Lecture 1: Introduction 17 January 2012 2012 Denis Gracanin Course Overview 2 Welcome What this course is about? What this course is not about? What will you learn? How will

More information

Concepts of Programming Languages

Concepts of Programming Languages Concepts of Programming Languages Lecture 1 - Introduction Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014

More information

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2014 Euiseong Seo

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2014 Euiseong Seo Principles in Programming: Orientation & Lecture 1 1 Course Objectives Introduce various subjects in computer science through puzzles and problems Most problems came from ICPC 2 Textbook Programming Challenges

More information

LECTURE 1. Overview and History

LECTURE 1. Overview and History LECTURE 1 Overview and History COURSE OBJECTIVE Our ultimate objective in this course is to provide you with the knowledge and skills necessary to create a new programming language (at least theoretically).

More information

MIDTERM EXAMINATION - CS130 - Spring 2005

MIDTERM EXAMINATION - CS130 - Spring 2005 MIDTERM EAMINATION - CS130 - Spring 2005 Your full name: Your UCSD ID number: This exam is closed book and closed notes Total number of points in this exam: 231 + 25 extra credit This exam counts for 25%

More information

Outline. Introduction to Programming (in C++) Introduction. First program in C++ Programming examples

Outline. Introduction to Programming (in C++) Introduction. First program in C++ Programming examples Outline Introduction to Programming (in C++) Introduction Programming examples Algorithms, programming languages and computer programs Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer

More information

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

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful? Chapter 1 :: Introduction Introduction Programming Language Pragmatics Michael L. Scott Why are there so many programming languages? evolution -- we've learned better ways of doing things over time socio-economic

More information

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

! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented Course Goal CMSC 330: Organization of Programming Languages Introduction Learn how programming languages work Broaden your language horizons! Different programming languages! Different language features

More information

Seminar in Programming Languages

Seminar in Programming Languages Seminar in Programming Languages Shuly Wintner Fall 2010-11 Course web site: http://cs.haifa.ac.il/~shuly/teaching/10/plseminar/ Course Goals Programming Language Concepts A language is a conceptual universe

More information

Com S 541. Programming Languages I

Com S 541. Programming Languages I Programming Languages I Lecturer: TA: Markus Lumpe Department of Computer Science 113 Atanasoff Hall http://www.cs.iastate.edu/~lumpe/coms541.html TR 12:40-2, W 5 Pramod Bhanu Rama Rao Office hours: TR

More information

Comp 333: Concepts of Programming Languages Fall 2016

Comp 333: Concepts of Programming Languages Fall 2016 Comp 333: Concepts of Programming Languages Fall 2016 Instructor: Professor Schwartz History Syntax and Semantics Compilers Language Constructs Names, Binding, Scoping, Data Types Expressions, Control

More information

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

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106 CS 565: Programming Languages Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106 Administrivia Who am I? Course web page http://www.cs.purdue.edu/homes/peugster/cs565spring08/ Office hours By appointment Main

More information

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

Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science) Lecture 09 Ada to Software Engineering Mr. Mubashir Ali Lecturer (Dept. of dr.mubashirali1@gmail.com 1 Summary of Previous Lecture 1. ALGOL 68 2. COBOL 60 3. PL/1 4. BASIC 5. Early Dynamic Languages 6.

More information

Programming Languages, Summary CSC419; Odelia Schwartz

Programming Languages, Summary CSC419; Odelia Schwartz Programming Languages, Summary CSC419; Odelia Schwartz Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design

More information

Why are there so many programming languages?

Why are there so many programming languages? Chapter 1 :: Introduction Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter01_ Introduction_4e - Tue November 21, 2017 Introduction Why are there so many

More information

CS 415 Midterm Exam Spring 2002

CS 415 Midterm Exam Spring 2002 CS 415 Midterm Exam Spring 2002 Name KEY Email Address Student ID # Pledge: This exam is closed note, closed book. Good Luck! Score Fortran Algol 60 Compilation Names, Bindings, Scope Functional Programming

More information

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

CSc 520. Course Outline (Subject to change) Course Outline (Subject to change)... Principles of Programming Languages. Christian Collberg Slide 0 2 Course Outline (Subject to change) This course will define, analyze and evaluate important concepts found in current programming languages. Its goals are to build an ability to evaluate and compare

More information

Early computers (1940s) cost millions of dollars and were programmed in machine language. less error-prone method needed

Early computers (1940s) cost millions of dollars and were programmed in machine language. less error-prone method needed Chapter 1 :: Programming Language Pragmatics Michael L. Scott Early computers (1940s) cost millions of dollars and were programmed in machine language machine s time more valuable than programmer s machine

More information

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

What is programming? Elements of Programming Languages. From machine code to programming languages. What is a programming language? What is programming? Elements of Programming Languages Lecture 0: Introduction and Course Outline James Cheney University of Edinburgh September 18, 2017 Computers are deterministic machines, controlled

More information

Language Translation, History. CS152. Chris Pollett. Sep. 3, 2008.

Language Translation, History. CS152. Chris Pollett. Sep. 3, 2008. Language Translation, History. CS152. Chris Pollett. Sep. 3, 2008. Outline. Language Definition, Translation. History of Programming Languages. Language Definition. There are several different ways one

More information

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

Outline. Programming Languages 1/16/18 PROGRAMMING LANGUAGE FOUNDATIONS AND HISTORY. Current PROGRAMMING LANGUAGE FOUNDATIONS AND HISTORY Dr. John Georgas, Northern Arizona University Copyright John Georgas All Rights Reserved Outline Current Programming languages Compiled and interpreted implementations

More information

Programmiersprachen (Programming Languages)

Programmiersprachen (Programming Languages) 2016-05-13 Preface Programmiersprachen (Programming Languages) coordinates: lecturer: web: usable for: requirements: No. 185.208, VU, 3 ECTS Franz Puntigam http://www.complang.tuwien.ac.at/franz/ps.html

More information

Programming Languages

Programming Languages Chapter 1 :: Introduction Programming Language Pragmatics Michael L. Scott Programming Languages What programming languages can you name? Which do you know? 1 Introduction Why are there so many programming

More information

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2015 Euiseong Seo

Principles in Programming: Orientation & Lecture 1. SWE2004: Principles in Programming Spring 2015 Euiseong Seo Principles in Programming: Orientation & Lecture 1 1 Course Objectives Introduce various subjects in computer science through puzzles and problems Most problems came from ICPC 2 Introduction Instructor:

More information

Programming Languages 2nd edition Tucker and Noonan"

Programming Languages 2nd edition Tucker and Noonan Programming Languages 2nd edition Tucker and Noonan" " Chapter 1" Overview" " A good programming language is a conceptual universe for thinking about programming. " " " " " " " " " " " " "A. Perlis" "

More information

CS2303 C14 Systems Programming Concepts. Bob Kinicki

CS2303 C14 Systems Programming Concepts. Bob Kinicki CS2303 C14 Concepts Bob Kinicki Survey and TA/SA s Pause to Look Backwards and Forwards Course Objectives Course Operation/Expectations Course Plan and Syllabus Systems Concepts Higher Level Language

More information

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

CS383 PROGRAMMING LANGUAGES. Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University CS383 PROGRAMMING LANGUAGES Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University KENNY Q. ZHU Research Interests: Programming Languages Probabilistic Programming Data Processing Concurrency

More information

IA010: Principles of Programming Languages

IA010: Principles of Programming Languages IA010: Principles of Programming Languages Introduction and course organization Achim Blumensath blumens@fi.muni.cz Faculty of Informatics, Masaryk University, Brno Warm-up: A Quiz What does this program

More information

CS A331 Programming Language Concepts

CS A331 Programming Language Concepts CS A331 Programming Language Concepts Lecture 4 Programming Language Semantics and Code Generation February 3, 2014 Sam Siewert PLP Companion Materials CD-ROM is On-Line: http://booksite.elsevier.com/9780123745149/?isbn=978

More information

In the hardware module, you saw the basic execution of a program Programs are written in specific languages Each language has it s strengths and

In the hardware module, you saw the basic execution of a program Programs are written in specific languages Each language has it s strengths and In the hardware module, you saw the basic execution of a program Programs are written in specific languages Each language has it s strengths and weaknesses, and own grammar and syntax We will take a high-

More information

CS 242. Fundamentals. Reading: See last slide

CS 242. Fundamentals. Reading: See last slide CS 242 Fundamentals Reading: See last slide Syntax and Semantics of Programs Syntax The symbols used to write a program Semantics The actions that occur when a program is executed Programming language

More information

CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages CS 314 Principles of Programming Languages Lecture 15: Review and Functional Programming Zheng (Eddy) Zhang Rutgers University March 19, 2018 Class Information Midterm exam forum open in Sakai. HW4 and

More information

http://xkcd.com/224/ CS252 Programming Language Paradigms Prof. Tom Austin San José State University Fall 2014 What are some programming languages? Why are there so many? Different domains. Mobile devices

More information

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG)

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG) SKILL AREA 304: Review Programming Language Concept Computer Programming (YPG) 304.1 Demonstrate an Understanding of Basic of Programming Language 304.1.1 Explain the purpose of computer program 304.1.2

More information

CSCI.4430/6969 Programming Languages Lecture Notes

CSCI.4430/6969 Programming Languages Lecture Notes CSCI.4430/6969 Programming Languages Lecture Notes August 28, 2006 1 Brief History of Programming Languages Ada Augusta, the Countess of Lovelace, the daughter of the poet Lord Byron, is attributed as

More information

Introduction to Engineering Using Robotics Experiments. Dr. Yinong Chen

Introduction to Engineering Using Robotics Experiments. Dr. Yinong Chen Introduction to Engineering Using Robotics Experiments Dr. Yinong Chen Outline Historical Perspective Programming Language Generations Programming Language Paradigms Imperative Programming Paradigm Writing

More information

A Tour of Language Implementation

A Tour of Language Implementation 1 CSCE 314: Programming Languages Dr. Flemming Andersen A Tour of Language Implementation Programming is no minor feat. Prometheus Brings Fire by Heinrich Friedrich Füger. Image source: https://en.wikipedia.org/wiki/prometheus

More information

CS101 Introduction to Programming Languages and Compilers

CS101 Introduction to Programming Languages and Compilers CS101 Introduction to Programming Languages and Compilers In this handout we ll examine different types of programming languages and take a brief look at compilers. We ll only hit the major highlights

More information

CSci 160 Computing Science I. Sarah Carruthers Fall 2017

CSci 160 Computing Science I. Sarah Carruthers Fall 2017 CSci 160 Computing Science I Sarah Carruthers Fall 2017 Administrivia Lecture: Tues. & Thurs. 11:30-1:00, Tues. 4:00-5:00 Instructor: Sarah Carruthers (sarah.carruthers@viu.ca) Office Hours: Mon. 3-4PM,

More information

CS 102 Lecture 1. Syllabus, history, intro

CS 102 Lecture 1. Syllabus, history, intro CS 102 Lecture 1 Syllabus, history, intro Contact Info Instructor: Hannah Aizenman Email: haizenm00@ccny.cuny.edu Office: NAC 7/311 Office Hours: After class by appointment 2:00-4:00 T/Th Recitation Instructor:

More information

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering?

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering? Lecture 1 Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering? Welcome to ENGR 102 Syllabus review Your Time Expectations (in

More information

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

! Broaden your language horizons. ! Study how languages are implemented. ! Study how languages are described / specified Course Goal CMSC 330: Organization of Programming Languages Introduction Instructors: Mike Hicks, Chau-Wen Tseng TAs: Srividya Ramaswamy, Eylul Dogruel, Khoa Doan Learn how programming languages work!

More information

COSC 2P90 Programming Languages & Object-Orientation

COSC 2P90 Programming Languages & Object-Orientation COSC 2P90 Programming Languages & Object-Orientation Hi! 1 Textbooks Main Text Comparative Programming Languages 3rd ed.; Wilson, LB & Clark, RG; Addison-Wesley (2001); ISBN 0-201-71012-9 Supplemental

More information

Chapter 5. Names, Bindings, and Scopes

Chapter 5. Names, Bindings, and Scopes Chapter 5 Names, Bindings, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Scope Scope and Lifetime Referencing Environments Named Constants 1-2 Introduction Imperative

More information

Lecture 1: Course Introduction

Lecture 1: Course Introduction Lecture 1: Course Introduction CS164: Programming Languages and Compilers P. N. Hilfinger, 787 Soda Spring 2015 Acknowledgement. Portions taken from CS164 notes by G. Necula. Last modified: Wed Jan 21

More information

Compilation I. Hwansoo Han

Compilation I. Hwansoo Han Compilation I Hwansoo Han Language Groups Imperative von Neumann (Fortran, Pascal, Basic, C) Object-oriented (Smalltalk, Eiffel, C++) Scripting languages (Perl, Python, JavaScript, PHP) Declarative Functional

More information

Improving Software Cost Estimates Using the Univariate Model

Improving Software Cost Estimates Using the Univariate Model Improving Software Cost Estimates Using the Univariate Model Brian Opaska OPS Consulting 1 Outline Background on Univariate (Linear) Method Improvement Techniques Code Count Metric Actual SLOC Analysis

More information

Programming (ERIM) Lecture 1: Introduction to programming paradigms and typing systems. Tommi Tervonen

Programming (ERIM) Lecture 1: Introduction to programming paradigms and typing systems. Tommi Tervonen Programming (ERIM) Lecture 1: Introduction to programming paradigms and typing systems Tommi Tervonen Econometric Institute, Erasmus School of Economics Course learning objectives After this course, you

More information

Lecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction

Lecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction Lecture content TDDA69 Data and Program Structure Introduction Cyrille Berger Course Introduction to the different Programming Paradigm The different programming paradigm Why different paradigms? Introduction

More information

1/14/2014. Introduction to CSE 1325 Object Oriented Programming (Using Java) Introduction (Cont.) Introduction

1/14/2014. Introduction to CSE 1325 Object Oriented Programming (Using Java) Introduction (Cont.) Introduction Introduction (Cont.) Introduction to CSE 1325 Object Oriented Programming (Using Java) Sharma Chakravarthy Information Technology Laboratory (IT Lab) Computer Science and Engineering Department The University

More information

Introduction to Computer Science I

Introduction to Computer Science I Introduction to Computer Science I CSE 1020 www.cse.yorku.ca/course/1020 Programming Contests in September and October Everyone is welcome to participate in these contests. The students who will represent

More information

CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages CS 314 Principles of Programming Languages Lecture 13: Names, Scopes and Bindings Zheng (Eddy) Zhang Rutgers University February 28, 2018 Review: Names, Scopes and Binding What s in a name? Each name means

More information

Program Abstractions, Language Paradigms. CS152. Chris Pollett. Aug. 27, 2008.

Program Abstractions, Language Paradigms. CS152. Chris Pollett. Aug. 27, 2008. Program Abstractions, Language Paradigms. CS152. Chris Pollett. Aug. 27, 2008. Outline. Abstractions for telling a computer how to do things. Computational Paradigms. Language Definition, Translation.

More information

SOFTWARE ARCHITECTURE 6. LISP

SOFTWARE ARCHITECTURE 6. LISP 1 SOFTWARE ARCHITECTURE 6. LISP Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ 2 Compiler vs Interpreter Compiler Translate programs into machine languages Compilers are

More information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

Programming Languages (CS )

Programming Languages (CS ) Programming Languages (CS 234319) Prof. Ron Pinter Dept. of CS, Technion Spring 2007 Why Not Study Programming Languages? The expressive power of all programming languages and computational devices is

More information

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

PLAGIARISM. Administrivia. Course home page: Introduction to Programming Languages and Compilers Administrivia Introduction to Programming Languages and Compilers CS164 11:00-12:00 MWF 306 Soda Notes by G. Necula, with additions by P. Hilfinger Course home page: http://www-inst.eecs.berkeley.edu/~cs164

More information

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

Introduction to Programming Languages and Compilers. CS164 11:00-12:00 MWF 306 Soda Introduction to Programming Languages and Compilers CS164 11:00-12:00 MWF 306 Soda Notes by G. Necula, with additions by P. Hilfinger Prof. Hilfinger CS 164 Lecture 1 1 Administrivia Course home page:

More information

Introduction to Scientific Computing Languages

Introduction to Scientific Computing Languages 1 / 1 Introduction to Scientific Computing Languages Prof. Paolo Bientinesi pauldj@aices.rwth-aachen.de Languages for Scientific Computing 2 / 1 What is a programming language? Languages for Scientific

More information

Programming Language Concepts 1982, 1987, Outline. Period

Programming Language Concepts 1982, 1987, Outline. Period Programming Language Concepts 1982, 1987, 1997 Mehdi Jazayeri Distributed Systems Group Technische Universität Wien mjazayeri@alum.mit.edu http://www.infosys.tuwien.ac.at Outline Computer science environment

More information

Introduction to the course and basic programming concepts

Introduction to the course and basic programming concepts Introduction to the course and basic programming concepts Lecture 1 of TDA 540 Object-Oriented Programming Jesper Cockx Fall 2018 Chalmers University of Technology Gothenburg University About the course

More information

Introduction to Scientific Computing Languages

Introduction to Scientific Computing Languages 1 / 17 Introduction to Scientific Computing Languages Prof. Paolo Bientinesi pauldj@aices.rwth-aachen.de Languages for Scientific Computing 2 / 17 What is a programming language? Languages for Scientific

More information

The role of semantic analysis in a compiler

The role of semantic analysis in a compiler Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

Lecture 15: Iteration and Recursion

Lecture 15: Iteration and Recursion Lecture 15: and Recursion The University of North Carolina at Chapel Hill Spring 2002 Lecture 15: and Recursion Feb 13/15 1 Control Flow Mechanisms Sequencing Textual order, Precedence in Expression Selection

More information

Welcome to Introduction to Computer Science I

Welcome to Introduction to Computer Science I Welcome to Introduction to Computer Science I CSE 1020 moodle.yorku.ca Instructor Name: Franck van Breugel Email: franck@cse.yorku.ca Please use your EECS or York account to send me email Office: Lassonde

More information

Course Announcements cs2220: Engineering Software

Course Announcements cs2220: Engineering Software Course Announcements cs2220: Engineering Software Assistant Teacher: Robbie Hott Help for PS1: Friday, 2:30-3:30pm (Thornton Stacks) Class 2: Introduction Java Fall 2010 University of Virginia David Evans

More information

CSI32 Object-Oriented Programming

CSI32 Object-Oriented Programming Outline Department of Mathematics and Computer Science Bronx Community College February 2, 2015 Outline Outline 1 Chapter 1 Cornerstones of Computing Textbook Object-Oriented Programming in Python Goldwasser

More information

CSc 372 Comparative Programming Languages

CSc 372 Comparative Programming Languages CSc 372 Comparative Programming Languages The University of Arizona Fall Semester, 2006 CSc 372, Fall 2006 Introduction Slide 1 CSc 372, Fall 2006 Introduction Slide 2 Introduction Instructor Teaching

More information

1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation

1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation 1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation Administrivia Lecturer: Kostis Sagonas (kostis@it.uu.se) Course home page: http://www.it.uu.se/edu/course/homepage/komp/h18

More information

Compiling and Interpreting Programming. Overview of Compilers and Interpreters

Compiling and Interpreting Programming. Overview of Compilers and Interpreters Copyright R.A. van Engelen, FSU Department of Computer Science, 2000 Overview of Compilers and Interpreters Common compiler and interpreter configurations Virtual machines Integrated programming environments

More information

1DL321: Kompilatorteknik I (Compiler Design 1)

1DL321: Kompilatorteknik I (Compiler Design 1) Administrivia 1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation Lecturer: Kostis Sagonas (kostis@it.uu.se) Course home page: http://www.it.uu.se/edu/course/homepage/komp/ht16

More information

Principles of Programming Languages. Lecture Outline

Principles of Programming Languages. Lecture Outline Principles of Programming Languages CS 492 Lecture 1 Based on Notes by William Albritton 1 Lecture Outline Reasons for studying concepts of programming languages Programming domains Language evaluation

More information

Lecture 1: Introduction. 23. August, 2010

Lecture 1: Introduction. 23. August, 2010 Lecture 1: Introduction 23. August, 2010 Lecture Outline TDT4165 Administratrivia Programming Languages Introduction Illustration Hello World Programs Further Comments Summary TDT4165 Administratrivia

More information

G Programming Languages - Fall 2018

G Programming Languages - Fall 2018 G22.2110-001 Programming Languages - Fall 2018 Class 1 Thomas Wies New York University Course Information and Resources Course web page (general info, syllabus, etc.) http://cs.nyu.edu/wies/teaching/pl-fa18/

More information

Informal Semantics of Data. semantic specification names (identifiers) attributes binding declarations scope rules visibility

Informal Semantics of Data. semantic specification names (identifiers) attributes binding declarations scope rules visibility Informal Semantics of Data semantic specification names (identifiers) attributes binding declarations scope rules visibility 1 Ways to Specify Semantics Standards Documents (Language Definition) Language

More information

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

G Programming Languages Spring 2010 Lecture 1. Robert Grimm, New York University G22.2110-001 Programming Languages Spring 2010 Lecture 1 Robert Grimm, New York University 1 Course Information Online at http://cs.nyu.edu/rgrimm/teaching/sp10-pl/, including grading policy and collaboration

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Winter 2017 Lecture 1a Andrew Tolmach Portland State University 1994-2017 1 What programming languages do you know? Some historically interesting and/or currently visible languages:

More information

Lecture 1: Course Introduction

Lecture 1: Course Introduction Lecture 1: Course Introduction CS164: Programming Languages and Compilers P. N. Hilfinger, 787 Soda Fall 2013 Acknowledgement. Portions taken from CS164 notes by G. Necula. Last modified: Thu Aug 29 16:03:34

More information

Lecture 31: Building a Runnable Program

Lecture 31: Building a Runnable Program The University of North Carolina at Chapel Hill Spring 2002 Lecture 31: Building a Runnable Program April 10 1 From Source Code to Executable Code program gcd(input, output); var i, j: integer; begin read(i,

More information

Preliminaries. 1. Preliminaries 1.1 Administration. 1.2 Motivation 1.3 Hello, World!

Preliminaries. 1. Preliminaries 1.1 Administration. 1.2 Motivation 1.3 Hello, World! Section 1 Preliminaries 1. Preliminaries 1.1 Administration 1.2 Motivation 1.3 Hello, World! 1.1. Administration Where are we? 1. Preliminaries 1.1. Administration 1. Preliminaries 1.1 Administration 1.2

More information

Lecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction Cyrille Berger

Lecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction Cyrille Berger Lecture content TDDA69 Data and Program Structure Introduction Cyrille Berger Course Introduction Concepts and models of programming languages The different programming paradigms Why different paradigms?

More information

CS 330 Lecture 18. Symbol table. C scope rules. Declarations. Chapter 5 Louden Outline

CS 330 Lecture 18. Symbol table. C scope rules. Declarations. Chapter 5 Louden Outline CS 0 Lecture 8 Chapter 5 Louden Outline The symbol table Static scoping vs dynamic scoping Symbol table Dictionary associates names to attributes In general: hash tables, tree and lists (assignment ) can

More information

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

What Is Computer Science? The Scientific Study of Computation. Expressing or Describing 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

More information

COMP 201: Principles of Programming

COMP 201: Principles of Programming COMP 201: Principles of Programming 1 Learning Outcomes To understand what computing entails and what the different branches of computing are. To understand the basic design of a computer and how it represents

More information

Objective: To learn meaning and concepts of programming. Outcome: By the end of this students should be able to describe the meaning of programming

Objective: To learn meaning and concepts of programming. Outcome: By the end of this students should be able to describe the meaning of programming 30 th September 2018 Objective: To learn meaning and concepts of programming Outcome: By the end of this students should be able to describe the meaning of programming Section 1: What is a programming

More information

Compilation 2012 The What and Why of Compilers

Compilation 2012 The What and Why of Compilers Compilation 2012 The What and Why of Compilers Jan Midtgaard Michael I. Schwartzbach Aarhus University What is a Compiler? A program that: tralates from one programming language to another preserves the

More information

Principles of Programming Languages Lecture 22

Principles of Programming Languages Lecture 22 Principles of Programming Languages Lecture 22 Wael Aboulsaadat wael@cs.toronto.edu http://portal.utoronto.ca/ Acknowledgment: parts of these slides are based on material by Diane Horton & Eric Joanis

More information

Chapter 3:: Names, Scopes, and Bindings (cont.)

Chapter 3:: Names, Scopes, and Bindings (cont.) Chapter 3:: Names, Scopes, and Bindings (cont.) Programming Language Pragmatics Michael L. Scott Review What is a regular expression? What is a context-free grammar? What is BNF? What is a derivation?

More information

Programming Paradigms

Programming Paradigms Programming Paradigms Programming languages A Programming language is a notational system for describing tasks/computations in a machine and human readable form. Most computer languages are designed to

More information

CS240: Programming in C

CS240: Programming in C CS240: Programming in C Lecture 1: Class overview. Cristina Nita-Rotaru Lecture 1/ Fall 2013 1 WELCOME to CS240 Cristina Nita-Rotaru Lecture 1/ Fall 2013 2 240 Team Instructor: Cristina Nita-Rotaru Special

More information

Introduction. A. Bellaachia Page: 1

Introduction. A. Bellaachia Page: 1 Introduction 1. Objectives... 2 2. Why are there so many programming languages?... 2 3. What makes a language successful?... 2 4. Programming Domains... 3 5. Language and Computer Architecture... 4 6.

More information

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

CS252 Advanced Programming Language Principles. Prof. Tom Austin San José State University Fall 2013 CS252 Advanced Programming Language Principles Prof. Tom Austin San José State University Fall 2013 What are some programming languages? Why are there so many? Different domains Mobile devices (Objective

More information