Lecture 1: Introduction. 23. August, 2010

Size: px
Start display at page:

Download "Lecture 1: Introduction. 23. August, 2010"

Transcription

1 Lecture 1: Introduction 23. August, 2010

2 Lecture Outline TDT4165 Administratrivia Programming Languages Introduction Illustration Hello World Programs Further Comments Summary

3 TDT4165 Administratrivia Course Staff Lecturer: Hans Christian Falkenberg, Teaching assistants: Børge Rødsjø, Dag Øyvind Tornes,

4 TDT4165 Administratrivia contd Sources of information Course website Mailing lists subscribe to receive official announcements subscribe to post and receive public discussion subscribe to post questions about exercises subscribe to post questions and complaints anonymously

5 TDT4165 Administratrivia contd Where to ask? Public discussions, help requests, etc.: tdt4165; tdt4165-studass; tdt4165-fagans Comments and complaints about exercises: tdt4165-fagans; hanscho Comments and complaints about the course: tdt4165-fagans;

6 TDT4165 Administratrivia contd Grading Mid-term exam (MTE): 30% (but you may choose to skip it) Final exam (FNE): 70% (100% if you skip MTE or the mark would be better without the MTE) Exercises: mandatory, but do not contribute to the final character; you must deliver correct solutions to at least 6 of the exercises. 1 1 Subject to minor changes.

7 TDT4165 Administratrivia contd Schedule Lectures: Mondays, , R5 Wednesdays, , H3 Some lectures may need to be moved (check plan on homepage) Office hours: On request. Labs (P15-414): Wednesday: ; Thursday

8 TDT4165 Administratrivia contd Key dates Midterm exam: October 18th (tentative date) Final exam: December 1st (fixed)

9 TDT4165 Administratrivia contd Pensum book P. van Roy, S. Haridi, Concepts, Techniques and Models of Computer Programming, 1st ed.

10 TDT4165 Administratrivia contd Syllabus Chapters 1 5: all sections Chapters 6 9: selected sections Selected lecture and exercise material Details will be published on the course s webpage, which take precedence over this information.

11 TDT4165 Administratrivia contd Optional material (read on your own) Sebesta, Concepts of Programming Languages

12 TDT4165 Administratrivia contd Optional material (read on your own) Scott, Programming Language Pragmatics

13 TDT4165 Administratrivia contd Additional material (for your interest) Friedman, Wand, Haynes, Essentials of Programming Languages

14 TDT4165 Administratrivia contd Additional material (for your interest) Cooper, Torczon, Engineering a Compiler

15 TDT4165 Administratrivia contd Additional material (for your interest) Aho, Lam, Sethi, Ullman, Compilers

16 TDT4165 Administratrivia contd Additional material (for your interest) Further optional books may be referenced where relevant. They cover: various aspects of programming language design mentioned at the course; various aspects of programming mentioned at the course; various programming languages where the concepts introduced at the course are implemented in a surprising or otherwise interesting way; etc.

17 TDT4165 Administratrivia contd Useful, though not obligatory, previous experience Discrete Mathematics (eg. TMA4140) Algorithms and Data Structures (eg. TDT4120) Logics Functional, Procedural, Object-Oriented (eg. TDT4100), and Logic Programming

18 TDT4165 Administratrivia contd Marginal Topics Compilation Introduction to languages other than Oz Software engineering, design patterns Algorithms, data structures, computational complexity

19 TDT4165 Administratrivia contd Platform We will program mostly in Oz using the Mozart system. Please install Mozart on your machines there are ports for many platforms; you can also use Mozart on machines in the labs or on the servers. Please read Mozart documentation for more on how to install and use the platform. Refer to for details. A brief introduction to Mozart and Oz will follow later during the lecture.

20 Lecture Outline TDT4165 Administratrivia Programming Languages Introduction Illustration Hello World Programs Further Comments Summary

21 Programming Languages What is programming? Broad sense: technical activities involved in the production of a program; analysis, design, and implementation. Narrow sense: coding (and testing) of programs for some given design. What is a language? Broadly: a systematic means of communication. Specifically: a programming language is a system for implementing algorithms as machine-executable programs.

22 Programming Languages contd Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. Rick Cook If debugging is the art of removing bugs, then programming must be the art of inserting them. (anonymous)

23 Programming Languages contd A few questions How many programming languages are there? Which programming languages do you know? What are the features of the programming languages you know? What are the strong and weak sides of the languages you know?

24 Programming Languages contd Central issues Throughout the course we will repeatedly address these questions: What are the underlying ideas common to some, many, or all programming languages? What features can a programming language have? What are the benefits and dangers of introducing or eliminating any of these features? How can these features be combined to improve the languages, and which combinations are problematic?

25 Hello World! Hello World Programs (HWP) A Hello world program is a simple program that, when executed, displays the message Hello World!. There are collections of HWPs written in about any existing programming language. 2 Somewhat more interesting are the so-called 99 Bottles of Beer programs. 3 2 See, e.g., 3 See

26 Hello World! contd HWP examples We will use a few HWPs to motivate further discussion about programming languages. All examples have been tested on Ubuntu Linux. You will need to install suitable software (compilers, interpreters, etc.) in order to execute each program. You may also want to read, and need to modify, the makefile. Download the programs from the course s webpage, and read the instructions.

27 HWPs Further Comments The HWP examples are extremely simple, yet they illustrate some important issues with programming languages. In many programming languages, HWP look almost or completely identically. All HWP programs do (almost) the same, despite the differences in appearance. Programming languages can be compared and contrasted based on: their syntax and semantics; the mode of execution of programs; the target platform(s); supported programming paradigms; their development and standardization, etc.

28 HWPs Further Comments contd What is syntax? The syntax of a (programming) language is a set of rules defining which sequences of symbols are recognized as sentences, i.e., which constructs are legal in the language; a specification of the form of (programs in) the language. How can we specify the syntax of a programming language? How can we generate programs from a specification of the syntax? How can we automatically check whether a piece of code is a legal program, i.e., that it is syntactically valid?

29 HWPs Further Comments contd Syntactically, programming languages can be as similar as, e.g., Java, C, C++, and C#, or as different as, e.g., Fortran, Oz, Scheme, and F#. Example (Syntactic similarities and dissimilarities) int i = j + 10; print "hello" // Java, C, C++, C#? # Perl, Python, Ruby, Groovy? (define i (+ j 10)) ; Scheme declare i = j + 10 % Oz integer :: i = j + 10! Fortran let i = j + 10 (* F# *) lj10+si # dc is(x, J + 10), Prolog

30 HWPs Further Comments contd What is semantics? Semantics is a specification of the meaning of (programs in) the language, what a program does when executed. Semantics of a (programming) language can be specified by description, by calculus, by a set of rules defining what happens when a program is executed How can we specify the semantics of a programming language? How can we automatically check whether a program can actually be executed? How can we predict what will happen if a program is executed? A bit more difficult to compare the semantics of programming languages based on HWPs...

31 HWPs Further Comments contd How can a program be executed? Programs can be: compiled, then executed on the target machine; interpreted directly on the target machine; Hybrid approaches are also possible. Some languages are designed specifically for compilation (e.g., C); 4 others for interpretation (e.g., Python, Ruby); 5 yet others support both interpretation and compilation (e.g., Lisp, Haskell, Scala). 4 Interactive C interpreters do exist; see, e.g., 5 But there are jit-compiled versions of both languages, e.g., IronPython and IronRuby targetting the.net platform.

32 HWPs Further Comments contd What can the target machine be? The target machine that executes a program can be: the underlying hardware with its architecture compilation into and/or interpretation of programs in the machine language; a virtual machine, which interprets (or compiles into machine language) programs in the intermediate form of bytecode; an interpreter which operates directly on the source code with no preceding compilation. The execution of machine language code is dependent on a specific architecture (e.g., x86) and a specific operating system (e.g., Linux). The execution of intermediate bytecode requires a specific virtual machine (e.g., JVM, CLR, ozengine). Direct execution of source code requires a specific interpreter (e.g., irb, groovysh).

33 HWPs Further Comments contd Example (Modes of execution) # compile C code into native (machine) code # then execute native code on the machine $ gcc hello.c -o hello &&./hello # compile C# code into Common Intermediate Language (CIL) # then execute on the Common Language Runtime (CLR) $ mcs hello.cs && mono hello.exe # interpret Scheme code using a Scheme interpreter # (a Scheme virtual machine ) $ scm -l hello.scm

34 HWPs Further Comments contd What programming paradigms can a language support? The are a number of different programming paradigms and concepts available in different languages, e.g., object-oriented programming (OOP), declarative programming, functional programming, programming with lazy execution, concurrent programming, logic programming, etc. Programming languages can (and often do) support more than one programming paradigm. Some languages are purely one-paradigmatic, for example: Datalog (function-free logic queries), Smalltalk (all things are objects), Scheme?

35 HWPs Further Comments contd Example (Programming paradigms) Fortran is a typical imperative, procedural programming language. Ruby is a purely object-oriented programming language. Haskell is a purely functional programming language with lazy evaluation. Erlang is a language designed specifically for programming with concurrency. Prolog is a declarative, logic programming language. Oz is a multiparadigm programming language.

36 HWPs Further Comments contd How can a programming language be developed? A programming language can be the result of a community effort and undergo continuous evolution, or of a one-time centralized development project. Some languages have formal specifications and many compliant implementations, for others there is only one reference implementation which is the de facto (but not formal) specification. Some programming languages are developed to solve a specific problem, others are developed as general purpose programming languages.

37 HWPs Further Comments contd Example (Specification and development of PL) Fortran was originally developed by John W. Backus team at IBM, and initially had no standard specification, but newer versions of the language are backed by ISO standards. There are numerous Fortran compilers, which provide their own extensions to the language. Scheme was originally developed by Guy L. Steele and Gerald J. Sussman at MIT and has a precise specification of both its syntax and semantics (most recently, the 6th Revised Report on the Algorithmic Language Scheme, R 6 RS). There are numerous implementations of Scheme. Perl was originally developed by Larry Wall at NASA and has no written specification; there is only one implementation of the interpreter, and it is the de facto reference for the language. The first object-oriented language, Simula 67, was developed by Ole-Johan Dahl and Kristen Nygaard then at the Norwegian Computing Centre, to be able to model and simulate interacting entities.

38 Lecture Outline TDT4165 Administratrivia Programming Languages Introduction Illustration Hello World Programs Further Comments Summary

39 Summary This time Next time we illustrated some of the similarities and differences between programming languages with the extremely simple (if not silly) Hello World Program we shall introduce the Oz platform we shall briefly introduce some of the main programming paradigms we shall introduce a motivating example specify and implement a simple language for arithmetic computations on integers we will have a deeper look at how languages can be specified at the level of their syntax

40 Summary contd Homework Pensum Further reading Questions...?...?...? Please read the introductory chapter (Ch. 1) from CTMCP. Download, install, and play with the Mozart system. There is no pensum material for today, but you will need to be familiar with Oz and Mozart anyway consider reading the Oz tutorial. 6 See, e.g., Chapter 2 in Sebesta Concepts of Programming Languages for an interesting account of the evolution of major programming languages. 6 See

Lecture Outline. Lecture 1: Introduction. TDT4165 Administrativia. TDT4165 Administrativia contd

Lecture Outline. Lecture 1: Introduction. TDT4165 Administrativia. TDT4165 Administrativia contd Lecture Outline Lecture 1: Introduction 20. August, 2008 TDT4165 Administrativia Programming Languages Introduction Illustration Hello World Programs Further Comments Summary Lecture 1: Introduction (1/40)

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

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

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

Compiler Construction

Compiler Construction Compiler Construction WWW: http://www.cs.uu.nl/wiki/cco Contact: J.Hage@uu.nl Edition 2016/2017 Course overview 2 What is compiler construction about? Programs are usually written in a high-level programming

More information

CS Compiler Construction West Virginia fall semester 2014 August 18, 2014 syllabus 1.0

CS Compiler Construction West Virginia fall semester 2014 August 18, 2014 syllabus 1.0 SYL-410-2014C CS 410 - Compiler Construction West Virginia fall semester 2014 August 18, 2014 syllabus 1.0 Course location: 107 ERB, Evansdale Campus Course times: Tuesdays and Thursdays, 2:00-3:15 Course

More information

CSCI 3136 Principles of Programming Languages

CSCI 3136 Principles of Programming Languages 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

More information

Programming Languages (CSCI 4430/6430) History, Syntax, Semantics, Essentials, Paradigms

Programming Languages (CSCI 4430/6430) History, Syntax, Semantics, Essentials, Paradigms Programming Languages (CSCI 4430/6430) History, Syntax, Semantics, Essentials, Paradigms Carlos Varela Rennselaer Polytechnic Institute August 30, 2016 C. Varela 1 The first programmer ever Ada Augusta,

More information

Programming (Econometrics)

Programming (Econometrics) Programming (Econometrics) Lecture 1: Introduction Tommi Tervonen Econometric Institute, Erasmus University Rotterdam Course learning objectives After this course, you should be able to: Program econometrical

More information

CS415 Compilers Overview of the Course. These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University

CS415 Compilers Overview of the Course. These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University CS415 Compilers Overview of the Course These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University Critical Facts Welcome to CS415 Compilers Topics in the

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

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

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

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

Programming language design and analysis

Programming language design and analysis Programming language design and analysis Introduction Marius Minea 25 September 2017 Why this course? Programming languages are fundamental and one of the oldest CS fields Language design is an important

More information

PLAGIARISM. Administrivia. Compilers. CS143 11:00-12:15TT B03 Gates. Text. Staff. Instructor. TAs. Office hours, contact info on 143 web site

PLAGIARISM. Administrivia. Compilers. CS143 11:00-12:15TT B03 Gates. Text. Staff. Instructor. TAs. Office hours, contact info on 143 web site Administrivia Everything is on the class Web site http://www.stanford.edu/class/cs143/ Compilers CS143 11:00-12:15TT B03 Gates Syllabus is on-line, of course Assignment dates will not change Midterm Thursday,

More information

Principles of Compiler Construction ( )

Principles of Compiler Construction ( ) Principles of Compiler Construction ( ) Dr Mayer Goldberg October 25, 2017 Contents 1 Course Objectives 1 2 Course Requirements 2 3 Detailed Syllabus 3 4 Computation of grade 6 5 References 6 Course number:

More information

Programming Language Concepts, cs2104 Lecture 01 ( )

Programming Language Concepts, cs2104 Lecture 01 ( ) Programming Language Concepts, cs2104 Lecture 01 (2003-08-15) Seif Haridi Department of Computer Science, NUS haridi@comp.nus.edu.sg 2002-08-15 S. Haridi, CS2104, L01 (slides: C. Schulte, S. Haridi) 1

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

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

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

Languages and Compilers

Languages and Compilers Languages and Compilers Nate Nystrom Amanj Sherwany usi-compilers@googlegroups.com http://usi-pl.github.io/lc/sp2015 University of Lugano About me 2009 2010 Assistant Professor 1998 1999 compiler engineer

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

Administrivia. Compilers. CS143 10:30-11:50TT Gates B01. Text. Staff. Instructor. TAs. The Purple Dragon Book. Alex Aiken. Aho, Lam, Sethi & Ullman

Administrivia. Compilers. CS143 10:30-11:50TT Gates B01. Text. Staff. Instructor. TAs. The Purple Dragon Book. Alex Aiken. Aho, Lam, Sethi & Ullman Administrivia Compilers CS143 10:30-11:50TT Gates B01 Syllabus is on-line, of course cs143.stanford.edu Assignment dates will not change Midterm Thursday, 5/3 in class Final Monday, 6/11 12:15-3:15pm Communication

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

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

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

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

cmpt 440/821 Advanced Topics in Programming Languages

cmpt 440/821 Advanced Topics in Programming Languages cmpt 440/821 Advanced Topics in Programming Languages Christopher Dutchyn January 3, 2017 Programmers spend a lot of time understanding and improving their tools: editors, profilers, debuggers, and so

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

Earlier edition Dragon book has been revised. Course Outline Contact Room 124, tel , rvvliet(at)liacs(dot)nl

Earlier edition Dragon book has been revised. Course Outline Contact Room 124, tel , rvvliet(at)liacs(dot)nl Compilerconstructie najaar 2013 http://www.liacs.nl/home/rvvliet/coco/ Rudy van Vliet kamer 124 Snellius, tel. 071-527 5777 rvvliet(at)liacs(dot)nl college 1, dinsdag 3 september 2013 Overview 1 Why this

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

understanding recursive data types, recursive functions to compute over them, and structural induction to prove things about them

understanding recursive data types, recursive functions to compute over them, and structural induction to prove things about them CS 555 Advanced Compiler Construction, Fall 2002 1 Course Information Course structure for Fall 2002 This semester the course will focus on compilation of functional programming languages. Important topics

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

COMP 3002: Compiler Construction. Pat Morin School of Computer Science

COMP 3002: Compiler Construction. Pat Morin School of Computer Science COMP 3002: Compiler Construction Pat Morin School of Computer Science Course Information Instructor: Pat Morin morin@scs.carleton.ca Just "Pat" Office Hours: Tuesdays 9:00-10:00, 13:30-14:30 Webpage: http://cg.scs.carleton.ca/~morin/teaching/3002/

More information

Compiler Design Spring 2018

Compiler Design Spring 2018 Compiler Design Spring 2018 Thomas R. Gross Computer Science Department ETH Zurich, Switzerland 1 Logistics Lecture Tuesdays: 10:15 11:55 Thursdays: 10:15 -- 11:55 In ETF E1 Recitation Announced later

More information

Anders Møller Michael Schwartzbach Erik Ernst Hans Hüttel

Anders Møller Michael Schwartzbach Erik Ernst Hans Hüttel Programming Paradigms 2010 Anders Møller Michael Schwartzbach Erik Ernst Hans Hüttel Aims This purpose of the course is to introduce the student to programming g languages g that support a variety of programming

More information

Compiler Design. Dr. Chengwei Lei CEECS California State University, Bakersfield

Compiler Design. Dr. Chengwei Lei CEECS California State University, Bakersfield Compiler Design Dr. Chengwei Lei CEECS California State University, Bakersfield The course Instructor: Dr. Chengwei Lei Office: Science III 339 Office Hours: M/T/W 1:00-1:59 PM, or by appointment Phone:

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

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

What is a programming language?

What is a programming language? Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? What is a programming language?...there is no agreement on what a programming language

More information

INFS 214: Introduction to Computing

INFS 214: Introduction to Computing INFS 214: Introduction to Computing Session 11 Principles of Programming Lecturer: Dr. Ebenezer Ankrah, Dept. of Information Studies Contact Information: eankrah@ug.edu.gh College of Education School of

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

EP241 Computer Programming

EP241 Computer Programming EP241 Computer Programming Topic 1 Dr. Ahmet BİNGÜL Department of Engineering Physics University of Gaziantep Modifications by Dr. Andrew BEDDALL Department of Electric and Electronics Engineering Sep

More information

CS/SE 153 Concepts of Compiler Design

CS/SE 153 Concepts of Compiler Design San José State University Department of Computer Science CS/SE 153 Concepts of Compiler Design Section 1 Fall 2018 Course and Contact Information Instructor: Ron Mak Office Location: ENG 250 Email: ron.mak@sjsu.edu

More information

CMPE 152 Compiler Design

CMPE 152 Compiler Design San José State University Department of Computer Engineering CMPE 152 Compiler Design Section 1 (Class) Sections 2 and 3 (s) Fall 2018 Course and Contact Information Instructor: Ron Mak Office Location:

More information

Principles of Compiler Construction ( )

Principles of Compiler Construction ( ) Principles of Compiler Construction ( ) Dr Mayer Goldberg September 5, 2016 Contents 1 Course Objectives 1 2 Course Requirements 2 3 Detailed Syllabus 3 4 References 6 Course number: 201-1-2061 Mandatory

More information

CSC 111 Introduction to Computer Science (Section C)

CSC 111 Introduction to Computer Science (Section C) CSC 111 Introduction to Computer Science (Section C) Course Description: (4h) Lecture and laboratory. Rigorous introduction to the process of algorithmic problem solving and programming in a modern programming

More information

CSE 504: Compiler Design

CSE 504: Compiler Design http://xkcd.com/303/ Compiler Design Course Organization CSE 504 1 / 20 CSE 504: Compiler Design http://www.cs.stonybrook.edu/~cse504/ Mon., Wed. 2:30pm 3:50pm Harriman Hall 116 C. R. Ramakrishnan e-mail:

More information

CSCI 565 Compiler Design and Implementation Spring 2014

CSCI 565 Compiler Design and Implementation Spring 2014 CSCI 565 Compiler Design and Implementation Spring 2014 Instructor: Description: Prerequisites: Dr. Pedro C. Diniz, e-mail pedro@isi.edu Lectures: Thursday, 8.00 10.50 AM, RTH 217, phone: (213) 740 4518

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

Programming Language Concepts, CS2104 Lab/Assignment 0 (Lab Session, 3-6pm, 24 th Aug 2007) Deadline for Lab0 : 5pm 28Aug 2007 Tue (submit via IVLE)

Programming Language Concepts, CS2104 Lab/Assignment 0 (Lab Session, 3-6pm, 24 th Aug 2007) Deadline for Lab0 : 5pm 28Aug 2007 Tue (submit via IVLE) Programming Language Concepts, CS2104 Lab/Assignment 0 (Lab Session, 3-6pm, 24 th Aug 2007) Deadline for Lab0 : 5pm 28Aug 2007 Tue (submit via IVLE) CS2104 is a 4 credit points module (written final exam

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

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

Paradigms of computer programming

Paradigms of computer programming Paradigms of computer programming Louv1.1x and Louv1.2x form a two-course sequence Together they teach programming as a unified discipline that covers all programming languages Second-year university level:

More information

On Academic Dishonesty. Declarative Computation Model. Single assignment store. Single assignment store (2) Single assignment store (3)

On Academic Dishonesty. Declarative Computation Model. Single assignment store. Single assignment store (2) Single assignment store (3) Declarative Computation Model Single assignment store (VRH 2.2) Kernel language syntax (VRH 2.3) Carlos Varela RPI October 6, 2009 Adapted with permission from: Seif Haridi KTH Peter Van Roy UCL On Academic

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

! 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

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

A Concepts-Based Approach for Teaching Programming

A Concepts-Based Approach for Teaching Programming A Concepts-Based Approach for Teaching Programming November 2005 Peter Van Roy Université catholique de Louvain Louvain-la-Neuve, Belgium Nov. 2005 P. Van Roy, UCL, Louvain-la-Neuve 1 Overview Teaching

More information

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

Overview of the Class

Overview of the Class Overview of the Class Copyright 2014, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California (USC) have explicit permission to make copies

More information

CS 536. Class Meets. Introduction to Programming Languages and Compilers. Instructor. Key Dates. Teaching Assistant. Charles N. Fischer.

CS 536. Class Meets. Introduction to Programming Languages and Compilers. Instructor. Key Dates. Teaching Assistant. Charles N. Fischer. CS 536 Class Meets Introduction to Programming Languages and Compilers Mondays, Wednesdays & Fridays, 11:00 11:50 204 Educational Sciences Charles N. Fischer Instructor Fall 2012 http://www.cs.wisc.edu/~fischer/cs536.html

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

Programming for Mobile Computing

Programming for Mobile Computing 1/57 Programming for Mobile Computing EECS 1022 moodle.yorku.ca Labs 2/57 For the things we have to learn before we can do them, we learn by doing them. Aristotle During the labs, carefully read the instructions,

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

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

Python for Earth Scientists

Python for Earth Scientists Python for Earth Scientists Andrew Walker andrew.walker@bris.ac.uk Python is: A dynamic, interpreted programming language. Python is: A dynamic, interpreted programming language. Data Source code Object

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

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

ECE573 Introduction to Compilers & Translators

ECE573 Introduction to Compilers & Translators ECE573 Introduction to Compilers & Translators Tentative Syllabus Fall 2005 Tu/Th 9:00-10:15 AM, EE 115 Instructor Prof. R. Eigenmann Tel 49-41741 Email eigenman@ecn Office EE334C Office Hours Tu 10:15-11:30

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

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

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

Overview of the Class

Overview of the Class Overview of the Class Copyright 2015, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California (USC) have explicit permission to make copies

More information

Announcements. 1. Forms to return today after class:

Announcements. 1. Forms to return today after class: Announcements Handouts (3) to pick up 1. Forms to return today after class: Pretest (take during class later) Laptop information form (fill out during class later) Academic honesty form (must sign) 2.

More information

Functional Programming and Haskell

Functional Programming and Haskell Functional Programming and Haskell Tim Dawborn University of Sydney, Australia School of Information Technologies Tim Dawborn Functional Programming and Haskell 1/22 What are Programming Paradigms? A programming

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

Functional Programming Lecture 1: Introduction

Functional Programming Lecture 1: Introduction Functional Programming Lecture 1: Introduction Viliam Lisý Artificial Intelligence Center Department of Computer Science FEE, Czech Technical University in Prague viliam.lisy@fel.cvut.cz Acknowledgements

More information

Compiling Techniques

Compiling Techniques Lecture 1: Introduction 20 September 2016 Table of contents 1 2 3 Essential Facts Lecturer: (christophe.dubach@ed.ac.uk) Office hours: Thursdays 11am-12pm Textbook (not strictly required): Keith Cooper

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

G COURSE PLAN ASSISTANT PROFESSOR Regulation: R13 FACULTY DETAILS: Department::

G COURSE PLAN ASSISTANT PROFESSOR Regulation: R13 FACULTY DETAILS: Department:: G COURSE PLAN FACULTY DETAILS: Name of the Faculty:: Designation: Department:: Abhay Kumar ASSOC PROFESSOR CSE COURSE DETAILS Name Of The Programme:: BTech Batch:: 2013 Designation:: ASSOC PROFESSOR Year

More information

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST) Programming Concepts & Algorithms Course Syllabus Course Title Course Code Computer Department Pre-requisites Course Code Course Instructor Programming Concepts & Algorithms + lab CPE 405C Computer Department

More information

ST. XAVIER S COLLEGE

ST. XAVIER S COLLEGE ST. XAVIER S COLLEGE MAITIGHAR, KATHMANDU Compiler Design and Construction Lab Assignment #1 Submitted by: Aashish Raj Shrestha 013BSCCSIT002 Submitted to: Mr. Ramesh Shahi Lecturer, Department of Computer

More information

Application Specific Signal Processors S

Application Specific Signal Processors S 1 Application Specific Signal Processors 521281S Dept. of Computer Science and Engineering Mehdi Safarpour 23.9.2018 Course contents Lecture contents 1. Introduction and number formats 2. Signal processor

More information

CMSC 330: Organization of Programming Languages. Administrivia

CMSC 330: Organization of Programming Languages. Administrivia CMSC 330: Organization of Programming Languages Administrivia 1 Course Goal Learn how programming languages work Broaden your language horizons Different programming languages Different language features

More information

EL2310 Scientific Programming

EL2310 Scientific Programming Lecture 6: Introduction to C (pronobis@kth.se) Overview Overview Lecture 6: Introduction to C Roots of C Getting started with C Closer look at Hello World Programming Environment Schedule Last time (and

More information

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

Course Syllabus. Programming Language Paradigms. Spring - DIS Copenhagen. Semester & Location: Elective Course - 3 credits. Course Syllabus Programming Language Paradigms Semester & Location: Type & Credits: Spring - DIS Copenhagen Elective Course - 3 credits Major Disciplines: Faculty Members: Computer Science, Mathematics

More information

Course and Unix Intro

Course and Unix Intro Course and Unix Intro Comp-206 : Introduction to Software Systems Lecture 1 Alexandre Denault Computer Science McGill University Fall 2006 Instructor Alexandre Denault Graduate student, working in the

More information

CMPE 152 Compiler Design

CMPE 152 Compiler Design San José State University Department of Computer Engineering CMPE 152 Compiler Design Section 1 (Class) Sections 2 and 3 (Labs) Spring 2019 Course and Contact Information Instructor: Ron Mak Office Location:

More information

Programming Languages FILS Andrei Vasilateanu

Programming Languages FILS Andrei Vasilateanu Programming Languages FILS 2014-2015 Andrei Vasilateanu Course Master: Administration Andrei Vasilateanu, andraevs@gmail.com Teaching Assistants: Radu Serban Grading: Final exam 40% Laboratory 60% 2 Tests

More information

Formal Languages and Compilers Lecture I: Introduction to Compilers

Formal Languages and Compilers Lecture I: Introduction to Compilers Formal Languages and Compilers Lecture I: Introduction to Compilers Free University of Bozen-Bolzano Faculty of Computer Science POS Building, Room: 2.03 artale@inf.unibz.it http://www.inf.unibz.it/ artale/

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

CS426 Compiler Construction Fall 2006

CS426 Compiler Construction Fall 2006 CS426 Compiler Construction David Padua Department of Computer Science University of Illinois at Urbana-Champaign 0. Course organization 2 of 23 Instructor: David A. Padua 4227 SC, 333-4223 Office Hours:

More information

More on Arrays CS 16: Solving Problems with Computers I Lecture #13

More on Arrays CS 16: Solving Problems with Computers I Lecture #13 More on Arrays CS 16: Solving Problems with Computers I Lecture #13 Ziad Matni Dept. of Computer Science, UCSB Announcements Homework #12 due today No homework assigned today!! Lab #7 is due on Monday,

More information

CS457/557 Functional Languages

CS457/557 Functional Languages CS457/557 Functional Languages Spring 2018 Lecture 1: Course Introduction Andrew Tolmach Portland State University (with thanks to Mark P. Jones) 1 Goals of this course Introduce the beautiful ideas of

More information

CSE115 / CSE503 Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall Office hours:

CSE115 / CSE503 Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall Office hours: CSE115 / CSE503 Introduction to Computer Science I Dr. Carl Alphonce 343 Davis Hall alphonce@buffalo.edu Office hours: Tuesday 10:00 AM 12:00 PM * Wednesday 4:00 PM 5:00 PM Friday 11:00 AM 12:00 PM OR

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

Class Structure. Prerequisites

Class Structure. Prerequisites Class Structure Procedural abstraction and recursion 6.037 - Structure and Interpretation of Computer Programs Mike Phillips, Benjamin Barenblat, Leon Shen, Ben Vandiver, Alex Vandiver, Arthur Migdal Massachusetts

More information