CSCI 3136 Principles of Programming Languages Summer 2013 Faculty - - PowerPoint PPT Presentation

csci 3136 principles of programming languages
SMART_READER_LITE
LIVE PREVIEW

CSCI 3136 Principles of Programming Languages Summer 2013 Faculty - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

CSCI 3136 Principles of Programming Languages

Summer 2013

Faculty of Computer Science Dalhousie University

1 / 100

slide-2
SLIDE 2

CSCI 3136 Principles of Programming Languages

Summer 2013

Aminul Islam Faculty of Computer Science Dalhousie University

2 / 100

slide-3
SLIDE 3

Basic Course Information

3 / 100

slide-4
SLIDE 4

Basic Course Information

Web: http://web.cs.dal.ca/~islam/3136/

4 / 100

slide-5
SLIDE 5

Basic Course Information

Web: http://web.cs.dal.ca/~islam/3136/ Class: Mon & Wed 12:05-13:25 at CS 127

5 / 100

slide-6
SLIDE 6

Basic Course Information

Web: http://web.cs.dal.ca/~islam/3136/ Class: Mon & Wed 12:05-13:25 at CS 127 Lab: Fri 12:05-13:25 at CS Lab 3

6 / 100

slide-7
SLIDE 7

Basic Course Information

Web: http://web.cs.dal.ca/~islam/3136/ 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

slide-8
SLIDE 8

Basic Course Information

Web: http://web.cs.dal.ca/~islam/3136/ 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

slide-9
SLIDE 9

Textbooks and Other Material

9 / 100

slide-10
SLIDE 10

Textbooks and Other Material

Class slides are available online

10 / 100

slide-11
SLIDE 11

Textbooks and Other Material

Class slides are available online Recommended text: Michael L. Scott. Programming Language Pragmatics, 3rd edition 2009

11 / 100

slide-12
SLIDE 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

slide-13
SLIDE 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

slide-14
SLIDE 14

Evaluation and Plagiarism Policy

Evaluation Plagiarism policy

14 / 100

slide-15
SLIDE 15

Evaluation and Plagiarism Policy

Evaluation

  • 40% assignments (Five)

Plagiarism policy

15 / 100

slide-16
SLIDE 16

Evaluation and Plagiarism Policy

Evaluation

  • 40% assignments (Five)
  • 20% midterm exam

Plagiarism policy

16 / 100

slide-17
SLIDE 17

Evaluation and Plagiarism Policy

Evaluation

  • 40% assignments (Five)
  • 20% midterm exam
  • 40% final exam

Plagiarism policy

17 / 100

slide-18
SLIDE 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

slide-19
SLIDE 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

slide-20
SLIDE 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: //www.cs.dal.ca/graduate/studentinfo/plagiarism

20 / 100

slide-21
SLIDE 21

How is This Course Useful?

21 / 100

slide-22
SLIDE 22

How is This Course Useful?

Help choose the most appropriate language for the job, evaluate trade-offs

22 / 100

slide-23
SLIDE 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

slide-24
SLIDE 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

slide-25
SLIDE 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

slide-26
SLIDE 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

slide-27
SLIDE 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

slide-28
SLIDE 28

We know Something in Common

28 / 100

slide-29
SLIDE 29

We know Something in Common

  • C

29 / 100

slide-30
SLIDE 30

We know Something in Common

  • C
  • C++

30 / 100

slide-31
SLIDE 31

We know Something in Common

  • C
  • C++
  • C#

31 / 100

slide-32
SLIDE 32

We know Something in Common

  • C
  • C++
  • C#
  • Java

32 / 100

slide-33
SLIDE 33

We know Something in Common

  • C
  • C++
  • C#
  • Java
  • JavaScript

33 / 100

slide-34
SLIDE 34

We know Something in Common

  • C
  • C++
  • C#
  • Java
  • JavaScript
  • Perl

34 / 100

slide-35
SLIDE 35

We know Something in Common

  • C
  • C++
  • C#
  • Java
  • JavaScript
  • Perl
  • PHP

35 / 100

slide-36
SLIDE 36

We know Something in Common

  • C
  • C++
  • C#
  • Java
  • JavaScript
  • Perl
  • PHP
  • Python

36 / 100

slide-37
SLIDE 37

We know Something in Common

  • C
  • C++
  • C#
  • Java
  • JavaScript
  • Perl
  • PHP
  • Python
  • Ruby

37 / 100

slide-38
SLIDE 38

We know Something in Common

  • C
  • C++
  • C#
  • Java
  • JavaScript
  • Perl
  • PHP
  • Python
  • Ruby
  • SQL

38 / 100

slide-39
SLIDE 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

slide-40
SLIDE 40

Principles of Programming Language

40 / 100

slide-41
SLIDE 41

Principles of Programming Language?

41 / 100

slide-42
SLIDE 42

Principles of Programming Language?

Human Language Programming Language

42 / 100

slide-43
SLIDE 43

Principles of Programming Language?

Human Language

  • Vocabulary

Programming Language

43 / 100

slide-44
SLIDE 44

Principles of Programming Language?

Human Language

  • Vocabulary

Programming Language

  • Key words

44 / 100

slide-45
SLIDE 45

Principles of Programming Language?

Human Language

  • Grammar

Programming Language

45 / 100

slide-46
SLIDE 46

Principles of Programming Language?

Human Language

  • Grammar

Programming Language

  • Grammar

46 / 100

slide-47
SLIDE 47

Principles of Programming Language?

Human Language

  • Proper Name/Noun (e.g.,

Gosling is the ...) Programming Language

47 / 100

slide-48
SLIDE 48

Principles of Programming Language?

Human Language

  • Proper Name/Noun (e.g.,

Gosling is the ...) Programming Language

  • Variable Name (e.g., int x

= 3;)

48 / 100

slide-49
SLIDE 49

Principles of Programming Language?

Human Language

  • ...

Programming Language

49 / 100

slide-50
SLIDE 50

Principles of Programming Language?

Human Language

  • ...

Programming Language

  • ...

50 / 100

slide-51
SLIDE 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;)

  • ...

51 / 100

slide-52
SLIDE 52

Difference between Human Language and Programming Language

“Colorless green ideas sleep furiously.” “John is a married bachelor.”

52 / 100

slide-53
SLIDE 53

Brief history of Programming Languages

53 / 100

slide-54
SLIDE 54

Brief history of Programming Languages

  • Machine language

54 / 100

slide-55
SLIDE 55

Brief history of Programming Languages

  • Machine language

“Hello world” example in Machine language

110011100111000001111100000001000011111000011111100000000010 000011001111100001100010000010011111000100000000000001001111 100000111110001000000000000000001000111110010000001100001111

55 / 100

slide-56
SLIDE 56

Brief history of Programming Languages

  • Assembly language

56 / 100

slide-57
SLIDE 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 ax,@data mov ds,ax mov ah,9 mov dx,offset hello_message int 21h mov ax,4C00h int 21h main endp end main

57 / 100

slide-58
SLIDE 58

Brief history of Programming Languages

  • FORTRAN (1957), COBOL

(1959), BASIC (1964), C (1972)

58 / 100

slide-59
SLIDE 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

slide-60
SLIDE 60

Brief history of Programming Languages

  • LISP (1959)→ Scheme (1975),

Common Lisp (1984)

60 / 100

slide-61
SLIDE 61

Brief history of Programming Languages

  • LISP (1959)→ Scheme (1975),

Common Lisp (1984)

“Hello world” example in LISP

(DEFUN HELLO-WORLD () (PRINT (LIST ’HELLO ’WORLD)))

61 / 100

slide-62
SLIDE 62

Brief history of Programming Languages

  • Prolog (1973)

62 / 100

slide-63
SLIDE 63

Brief history of Programming Languages

  • Prolog (1973)

“Hello world” example in Prolog

?- write(’Hello world.’), nl. Hello world. true. ?-

63 / 100

slide-64
SLIDE 64

Brief history of Programming Languages

  • Simula (1967), Smalltalk

(1980), C++ (1985), Java (1995), C# (2002)

64 / 100

slide-65
SLIDE 65

Brief history of Programming Languages

  • Simula (1967), Smalltalk

(1980), C++ (1985), Java (1995), C# (2002)

“Hello world” example in Java

class HelloWorldApp { public static void main(String[] args){ System.out.println("Hello World!"); } }

65 / 100

slide-66
SLIDE 66

Brief history of Programming Languages

  • Perl (1987), Python (1990s),

JavaScript (1995), PHP (1995),

66 / 100

slide-67
SLIDE 67

Programming Paradigms

67 / 100

slide-68
SLIDE 68

Programming Paradigms

Imperative programming

68 / 100

slide-69
SLIDE 69

Programming Paradigms

Imperative programming

  • assemblers, FORTRAN, BASIC, COBOL

69 / 100

slide-70
SLIDE 70

Programming Paradigms

Imperative programming

  • assemblers, FORTRAN, BASIC, COBOL
  • Structured programming (ALGOL, Pascal, C)

70 / 100

slide-71
SLIDE 71

Programming Paradigms

Imperative programming

  • assemblers, FORTRAN, BASIC, COBOL
  • Structured programming (ALGOL, Pascal, C)

Object-oriented programming

71 / 100

slide-72
SLIDE 72

Programming Paradigms

Imperative programming

  • assemblers, FORTRAN, BASIC, COBOL
  • Structured programming (ALGOL, Pascal, C)

Object-oriented programming

  • Smalltalk, C++, Java

72 / 100

slide-73
SLIDE 73

Programming Paradigms

Imperative programming

  • assemblers, FORTRAN, BASIC, COBOL
  • Structured programming (ALGOL, Pascal, C)

Object-oriented programming

  • Smalltalk, C++, Java

Functional programming

73 / 100

slide-74
SLIDE 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

slide-75
SLIDE 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

slide-76
SLIDE 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

slide-77
SLIDE 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

slide-78
SLIDE 78

78 / 100

slide-79
SLIDE 79

Why So Many Programming Languages?

79 / 100

slide-80
SLIDE 80

Why So Many Programming Languages?

  • Evolution

80 / 100

slide-81
SLIDE 81

Why So Many Programming Languages?

  • Evolution
  • Special purpose

81 / 100

slide-82
SLIDE 82

Why So Many Programming Languages?

  • Evolution
  • Special purpose
  • Personal preference

82 / 100

slide-83
SLIDE 83

Why So Many Programming Languages?

  • Evolution
  • Special purpose
  • Personal preference

What makes a programming language successful?

83 / 100

slide-84
SLIDE 84

Why So Many Programming Languages?

  • Evolution
  • Special purpose
  • Personal preference

What makes a programming language successful?

  • Expressive power

84 / 100

slide-85
SLIDE 85

Why So Many Programming Languages?

  • Evolution
  • Special purpose
  • Personal preference

What makes a programming language successful?

  • Expressive power
  • Easy to learn

85 / 100

slide-86
SLIDE 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

slide-87
SLIDE 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

slide-88
SLIDE 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

slide-89
SLIDE 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

slide-90
SLIDE 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

slide-91
SLIDE 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.

slide-92
SLIDE 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.

slide-93
SLIDE 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.

slide-94
SLIDE 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.

slide-95
SLIDE 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.

slide-96
SLIDE 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.

slide-97
SLIDE 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

slide-98
SLIDE 98

Compiler/ Interpreter

{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

98 / 100

slide-99
SLIDE 99

99 / 100

slide-100
SLIDE 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