n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation"

Transcription

1 Lecture Outline Programming Languages CSCI-4430 & CSCI-6430, Spring Ana Milanova Lally Hall 314, Office hours: Wednesdays Noon-2pm Art of programming language design Programming language spectrum Why study programming languages? Overview of compilation Read: Scott Chapter 1 2 Course webpage Announcements check regularly Schedule, Notes, Reading Schedule, lecture slides and assigned reading Homework Homework assignments posted there Homework server Homework submission and grades RPILMS Discussion board and grades 3 Required textbook Programming Language Pragmatics, 3 rd Edition, by Michael Scott, Morgan Kaufmann, 2009 Recommended textbook Compilers: Principles, Techniques, and Tools, 2 nd Edition, by A. Aho, M. Lam, R. Sethi and J. Ullman, Addison Wesley, 2007 (as known as The Dragon Book ) 4 Syllabus Topics, outcomes, policies and grading 2 midterm exams and a final exam: 50% 9 homework assignments: 42% 10 quizzes: 8% 2% extra credit for attendance and participation 5 Homework is due at the beginning of lecture on the due date Submit written homework electronically in Homework server AND on paper at the beginning of lecture Submit programming homework in Homework server No late days! You may submit a late homework at the beginning of next lecture for 50% credit 6 1

2 Quizzes 10 in-class quizzes Will cover material of previous week Work in groups is encouraged We will distribute quizzes at the beginning of lecture Keep and submit quiz at the end of class In-class exercises At the end of class, I may give a simple problem on the material we have just covered Work in groups and ask questions You can discuss or submit answers to receive feedback Participation in these exercises carries towards 2% extra credit 7 8 Graduate students taking 6430 as part of the PhD qualifying exam To earn an A, you must earn 94% or more AND Complete (satisfactorily!) a paper critique Check syllabus for details 9 Random Notes Prolog and Scheme programming assignments must be be completed individually Java programming assignment must be completed in teams of two using pairprogramming Ask questions: in class, after class, , LMS 10 Academic Integrity All written homework assignments must be completed individually Programming assignments, except for last one, must be completed individually Excessive similarities in homework and exams! will be considered cheating Incidents of cheating will be taken extremely seriously and will result in penalties 11 How to Study Read textbook chapter in advance of lecture I will assign reading at the end of each class Read lecture notes and textbook chapter (again) immediately after class I will post lecture notes short after class Solve exercises in lecture notes Form study groups ASK QUESTIONS in class, after class, etc. 12 2

3 Course Topics Lecture Outline Programming language syntax: Scanning and parsing Programming language semantics: Attribute grammars Naming, binding and scoping Data abstraction and types Control abstraction and parameter passing Concurrency A logic-oriented language: Prolog A functional language: Scheme Imperative languages An object-oriented language: Java A dynamic language: Python to the course The art of programming language design The programming language spectrum Why study programming languages Overview of compilation The Art of Language Design Why are there so many languages? Different programming domains Business applications Process data, reports, transactions, increasingly distributed Manufacturing/control systems Reliability and non-stop operation Scientific applications Computationally intensive Personal preference The Art of Language Design Some languages are more successful than others Expressive Power Abstraction Ease of use by novice Excellent compilers Powerful sponsors Circumstances Imperative languages Von Neumann languages: Fortran, C, Object-oriented languages: Java, C++, Smalltalk, Dynamic languages: Perl, Python, PHP, Declarative languages Functional languages: Scheme/Lisp, ML, Haskell Logic languages: Prolog There are other declarative languages: e.g., Imperative languages Evolved from the von Neumann Architecture Variables Assignment Statements dataflow languages 17. Graph: Sebesta,

4 Imperative languages j := i j lw t0,28(sp) lw t1,24(sp) subu t2,t0,t1 sw t2,24(sp) von Neumann bottleneck : tube connecting CPU and memory Imperative languages Most widely popular programming style FORTRAN, C, C++, C#, Java, Python, Visual BASIC, Perl, JavaScript, Ruby, etc. Variable and assignment statement are central concepts Program is a sequence of statements: j := i j; k := j * l; Execution is a sequence of transitions on memory state FORTRAN was invented in mid-1950 John Backus, the inventor of FORTRAN, wrote the following paper in 1979: Can programming be liberated from the von Neumann style? A functional style and its algebra of programs Problems with imperative languages Difficult to understand programs Difficult to reason about correctness of programs Von Neumann Bottleneck Functional Programming Main alternative to imperative programming Lisp/Scheme, ML, Haskell Program consists of function definitions + evaluation expr (fun3 (fun2 (fun1 data))) (fun3 (fun2 data2)) (fun3 data3) data4 Execution is a sequence of function applications (i.e., reductions) Logic Programming Perform queries against knowledge base Prolog, Datalog, SQL An Example: Inner Product Inner product in FORTRAN: 1. C := 0; 2. for I := 1 step 1 until N do 3. C := C + a[i]* b[i]; Illustrates state-transition semantics An Example: Inner Product Inner product in FP: Function composition Def IP = (Insert +) º (ApplyToAll *) º Transpose IP <<1,2,3>,<6,5,4>> is (Insert +) ((ApplyToAll *) (Transpose <<1,2,3>,<6,5,4>>)) (Insert +) ((ApplyToAll *) <<1,6>,<2,5>,<3,4>>) (Insert +) <6,10,12> 28 Fall 16 CSCI 4430, A Milanova 23 Illustrates reduction (applicative) semantics 24 4

5 Why Study Programming Languages Goal of the course: learn to analyze programming languages What are the questions we ask when facing a new programming language Helps learn new languages, choose the right language for a problem, understand language features, design better languages! Lecture Outline to the course The art of language design The programming language spectrum Why study programming languages Overview of compilation Compilation and Interpretation Compilation A high-level program is translated into executable machine code Compiler Pure interpretation A program is translated and executed one statement at a time Interpreter Hybrid interpretation A program is compiled into intermediate code; intermediate code is interpreted Both a compiler and an interpreter 27 Compilation character stream Scanner (lexical analysis) token stream Parser (syntax analysis) parse tree Semantic analysis and intermediate code generation abstract syntax tree and/or intermediate form Machine-independent code improvement Code Generation COMPILER modified intermediate form target language (assember) Machine-dependent code improvement modified target language 28 Compilation Compilation position = initial + rate * 60; Scanner <id,1> <=> <id,2> <+> <id,3> <*> <60> Parser Symbol table 1. position, 2. initial, 3. rate, Semantic analysis and intermediate code generation = <id,1> + <id,2> * <id,3> inttoreal 60 Abstract Syntax Tree Semantic analysis and intermediate code generation tmp1 = inttoreal (60) tmp2 = id3 * tmp1 tmp3 = id2 + tmp2 id1 = tmp3 Intermediate form (three-address code)

6 Compilation Pure Interpretation Machine-independent code improvement tmp1 = id3 * 60.0 id1 = id2 + tmp1 Code generation Improved intermediate form e.g. BASIC REM COMMENT LET X = 5 LET Y = 8 PRINT X PRINT Y LET Z = X PRINT Z... Also JavaScript... movf id3, R2 mulf #60.0, R2 movf id2, R1 addf R2, R1 movf R1, id1 Target language Hybrid Interpretation Compilation vs. Interpretation 09 AB AB AB AB AB e.g. Java byte code e.g. Java Virtual Machine (JVM) A language can be implemented using a compiler or using an interpreter One can build a compiler for Lisp and one can easily build an interpreter for C or Fortran However, language features (determined during language design) have tremendous impact on compilability and the decision compiler vs. interpreter Also Perl Compilation vs. Interpretation What are the features that impact compilability? Static languages, i.e., languages that perform most semantic checks program execution, are suitable for compilation Dynamic languages, i.e., languages that perform most semantic checks execution, are suitable for interpretation 35 Compilation vs. Interpretation Advantages of compilation? Faster execution Advantages of interpretation? Greater flexibility Sandboxing, source-level debugging, dynamic semantic (type) checks, other dynamic features are much easier 36 6

7 Compilation vs. Interpretation New languages are increasingly dynamic Hybrid implementations are common: compiler from source to intermediate form, then a smart interpreter (Virtual Machine) which does interpretation and JIT (Just-in-Time) compilation Tons of code written in static languages (C, C++, Fortran) Dynamic instrumentation tools (Valgrind, Pin, DynamoRio) serve as interpreters for compiled binaries 37 Next Class We will review regular expressions and context free grammars Read Chapter 2.1 and 2.2 from Scott s book

CSCI 3136 Principles of Programming Languages

CSCI 3136 Principles of Programming Languages CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University

More information

Programming Languages

Programming Languages Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:

More information

INTRODUCTION TO PROGRAMMING LANGUAGES

INTRODUCTION TO PROGRAMMING LANGUAGES 1 INTRODUCTION TO PROGRAMMING LANGUAGES COMS W1001 Introduction to Information Science Boyi Xie 2 Today s Topics Why We Need Programming Languages Low-level Programming Language High-level Programming

More information

Programming Languages and Compilers

Programming Languages and Compilers Programming Languages and Compilers Qing Yi class web site: www.cs.utsa.edu/~qingyi/cs5363 cs5363 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer

More information

Design and Implementation of Programming Languages. CSC301 - Fall 2012 Online Syllabus

Design and Implementation of Programming Languages. CSC301 - Fall 2012 Online Syllabus Design and Implementation of Programming Languages CSC301 - Fall 2012 Online Syllabus General Course Information!... 2 Course Overview 2 Course Web Site 3 Getting Help in this Course 3 Grading Information

More information

1/20/2016 INTRODUCTION

1/20/2016 INTRODUCTION INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We

More information

Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages

Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming

More information

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs

More information

CSE 307: Principles of Programming Languages

CSE 307: Principles of Programming Languages Course Organization Introduction CSE 307: Principles of Programming Languages Spring 2015 R. Sekar Course Organization Introduction 1 / 34 Topics 1. Course Organization Info and Support Course Description

More information

Special Topics: Programming Languages

Special Topics: Programming Languages Lecture #2 0 V22.0490.001 Special Topics: Programming Languages B. Mishra New York University. Lecture #2.5 Lecture #2 1 Slide 1 Recapitulation Computers work in machine language, which is difficult for

More information

Image credits: http://xkcd.com/353/

Image credits: http://xkcd.com/353/ Image credits: http://xkcd.com/353/ CS 354: Programming Languages Alark Joshi Copyright 2009 Addison-Wesley. All rights reserved. Contact Information Email: alarkjoshi@boisestate.edu Course Website: o

More information

Concepts of Programming Languages. Robert W. Sebesta

Concepts of Programming Languages. Robert W. Sebesta Concepts of Programming Languages Robert W. Sebesta Chapter 1 Preliminaries Reasons for studying the underlying concepts of programming languages The Study of Programming Languages Increases our ability

More information

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16 Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz Michel.Schinz@epfl.ch Assistant: Iulian Dragos INR 321, 368 64

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? Artificial language" Computers" Programs" Syntax" Semantics" What is a programming language?...there

More information

Language Processing Systems

Language Processing Systems Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to hamada@u-aizu.ac.jp Course materials at www.u-aizu.ac.jp/~hamada/education.html

More information

Programming Languages. National Chiao Tung University Chun-Jen Tsai 05/4/2012

Programming Languages. National Chiao Tung University Chun-Jen Tsai 05/4/2012 Programming Languages National Chiao Tung University Chun-Jen Tsai 05/4/2012 Programming Language Programming Language (PL) is a language that can precisely describe an algorithm to a computer so that

More information

CSE 130 Programming Language Principles & Paradigms

CSE 130 Programming Language Principles & Paradigms CSE 130 Programming Language Principles & Paradigms Thomas A. Powell tpowell@pint.com Housekeeping Syllabus review Direct class page link http://www.pint.com/classes/cse130 Updated syllabus, notes, homework

More information

Principles of Programming Languages Topic: Introduction Professor Louis Steinberg

Principles of Programming Languages Topic: Introduction Professor Louis Steinberg Principles of Programming Languages Topic: Introduction Professor Louis Steinberg CS 314, LS,LTM: L1: Introduction 1 Contacts Prof. Louis Steinberg lou @ cs.rutgers.edu x5-3581 401 Hill TA: to be announced

More information

CA4003 - Compiler Construction

CA4003 - Compiler Construction CA4003 - Compiler Construction David Sinclair Overview This module will cover the compilation process, reading and parsing a structured language, storing it in an appropriate data structure, analysing

More information

CSE 130 Programming Language Principles & Paradigms

CSE 130 Programming Language Principles & Paradigms CSE 130 Programming Language Principles & Paradigms Thomas A. Powell tpowell@pint.com Housekeeping Syllabus review Direct class page link http://www.pint.com/classes/cse130 Updated syllabus, notes, homework

More information

Programming Languages

Programming Languages Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately

More information

CS412/413. Introduction to Compilers and Translators. Lecture 1: Overview 21 Jan 08

CS412/413. Introduction to Compilers and Translators. Lecture 1: Overview 21 Jan 08 CS412/413 Introduction to Compilers and Translators Lecture 1: Overview 21 Jan 08 Outline Course Organization General course information Homework & project information Introduction to Compilers What are

More information

Lecture 1: Introduction

Lecture 1: Introduction Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming

More information

Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.

Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam. Compilers Spring term Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.es Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer

More information

An Overview of a Compiler

An Overview of a Compiler An Overview of a Compiler Department of Computer Science and Automation Indian Institute of Science Bangalore 560 012 NPTEL Course on Principles of Compiler Design Outline of the Lecture About the course

More information

Intro to Programming: Basic Definitions

Intro to Programming: Basic Definitions Intro to Programming: Basic Definitions Programming: The planning, scheduling, or performing of a task or event Computer program: A sequence of instructions for a computer to execute Computer: An electronic,

More information

Introduction. Learning Outcomes and Content. Computing Facilities

Introduction. Learning Outcomes and Content. Computing Facilities COMP348/2 Fall 2016 Section U Principles of Programming Languages (3 credits) Course Outline / Syllabus Prerequisites: COMP248 or COMP249 or COMP238 From September 6 th to December 5 th 2015 Section Instructors

More information

Motivation Why study programming languages? Some key concepts

Motivation Why study programming languages? Some key concepts Motivation Why study programming languages? Some key concepts Some material copyright 1998 by Addison Wesley Longman, Inc. 1 Some material copyright 1998 by Addison Wesley Longman, Inc. 2 Some material

More information

COMP 412 Overview of the Course

COMP 412 Overview of the Course COMP 412 Overview of the Course Copyright 2005, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit permission to make copies

More information

Compiling Techniques

Compiling Techniques Lecture 1: Introduction 22 September 2015 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

Dr. Angela Guercio. Spring 2011

Dr. Angela Guercio. Spring 2011 CS 33101 Structure of Programming Languages Dr. Angela Guercio Spring 2011 Instructor Angela Guercio Office: 424, Main Hall Phone: 330 244 3424 (KSU ext 53424) Best way to contact me: aguercio@kent.edu

More information

Semester Review. CSC 301, Fall 2015

Semester Review. CSC 301, Fall 2015 Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!

More information

Lecture 9. Semantic Analysis Scoping and Symbol Table

Lecture 9. Semantic Analysis Scoping and Symbol Table Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax

More information

COS 301 Programming Languages

COS 301 Programming Languages Preliminaries COS 301 Programming Languages Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories

More information

Assembly Languages. Topic 4. Programming Languages. Assembly Languages. High-level Languages. Abstracting further from the Nuts and Bolts

Assembly Languages. Topic 4. Programming Languages. Assembly Languages. High-level Languages. Abstracting further from the Nuts and Bolts Topic 4 Assembly Languages Programming Languages Abstracting further from the Nuts and Bolts CPU (the core of the computer) responds to binary instructions only. The very first computer programs were written

More information

Chapter 15 Functional Programming Languages

Chapter 15 Functional Programming Languages Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,

More information

Compilers I Chapter 1: Introduction

Compilers I Chapter 1: Introduction Compilers I Chapter 1: Introduction Lecturers: Paul Kelly (phjk@doc.ic.ac.uk) Office: room 304, William Penney Building Naranker Dulay (nd@doc.ic.ac.uk) Office: room 562 Materials: CATE Textbook Course

More information

CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages CMSC 330: Organization of Programming Languages Introduction Instructors: Mike Hicks, Dave Levin 1 Course Goal Learn how programming languages work! Broaden your language horizons Different programming

More information

CSCI E 98: Managed Environments for the Execution of Programs

CSCI E 98: Managed Environments for the Execution of Programs CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office

More information

Problem Solving With C++

Problem Solving With C++ CISC 1600/1610 Computer Science I Programming in C++ Professor Daniel Leeds dleeds@fordham.edu JMH 328A Introduction to programming with C++ Learn Fundamental programming concepts Key techniques Basic

More information

Computer Programming. Course Details An Introduction to Computational Tools. Prof. Mauro Gaspari: mauro.gaspari@unibo.it

Computer Programming. Course Details An Introduction to Computational Tools. Prof. Mauro Gaspari: mauro.gaspari@unibo.it Computer Programming Course Details An Introduction to Computational Tools Prof. Mauro Gaspari: mauro.gaspari@unibo.it Road map for today The skills that we would like you to acquire: to think like a computer

More information

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014 CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections

More information

CSCE 314 Programming Languages

CSCE 314 Programming Languages CSCE 314 Programming Languages Introduction and Course Administration Dr. Hyunyoung Lee hlee@cse.tamu.edu 410B HR Bright 979-845-2490 1 CSCE 314: Programming Languages Course Homepage http://faculty.cse.tamu.edu/hlee/csce314/

More information

Programming Language Pragmatics

Programming Language Pragmatics Programming Language Pragmatics THIRD EDITION Michael L. Scott Department of Computer Science University of Rochester ^ШШШШШ AMSTERDAM BOSTON HEIDELBERG LONDON, '-*i» ЩЛ< ^ ' m H NEW YORK «OXFORD «PARIS»SAN

More information

Computer/Information Science Course Descriptions

Computer/Information Science Course Descriptions Computer/Information Science Course Descriptions COMS 1003: Introduction to Computer Based Systems Provides students with both computer concepts and hands-on applications. Although little or no prior computer

More information

How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer

How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language

More information

Compiler construction

Compiler construction Compiler construction Martin Steffen January 19, 2016 Contents 1 Introduction 1 1.1 Introduction................................................... 1 1.2 Compiler architecture & phases........................................

More information

Chapter 1. 1.1Reasons for Studying Concepts of Programming Languages

Chapter 1. 1.1Reasons for Studying Concepts of Programming Languages Chapter 1 1.1Reasons for Studying Concepts of Programming Languages a) Increased ability to express ideas. It is widely believed that the depth at which we think is influenced by the expressive power of

More information

CS441 Programming Languages: Design & Implementation Practice Exam

CS441 Programming Languages: Design & Implementation Practice Exam S441 Programming Languages: Design & Implementation Practice Exam 1. nswer the following questions: a. While the popularities of various languages have increased and decreased during the past forty years,

More information

CS 40 Computing for the Web

CS 40 Computing for the Web CS 40 Computing for the Web Art Lee January 20, 2015 Announcements Course web on Sakai Homework assignments submit them on Sakai Email me the survey: See the Announcements page on the course web for instructions

More information

1 (1x17 =17 points) 2 (21 points) 3 (5 points) 4 (3 points) 5 (4 points) Total ( 50points) Page 1

1 (1x17 =17 points) 2 (21 points) 3 (5 points) 4 (3 points) 5 (4 points) Total ( 50points) Page 1 CS 1621 MIDTERM EXAM 1 Name: Problem 1 (1x17 =17 points) 2 (21 points) 3 (5 points) 4 (3 points) 5 (4 points) Total ( 50points) Score Page 1 1. (1 x 17 = 17 points) Determine if each of the following statements

More information

CS 432 Fall Mike Lam, Professor. Compilers. Advanced Systems Elective

CS 432 Fall Mike Lam, Professor. Compilers. Advanced Systems Elective CS 432 Fall 2016 Mike Lam, Professor Compilers Advanced Systems Elective Discussion question What is a compiler? Automated translation A compiler is a computer program that automatically translates other

More information

What is OOP (and why does it matter?)

What is OOP (and why does it matter?) What is OOP (and why does it matter?) CAS London 2016 Michael Kölling University of Kent 1957 1960 1965 1970 1975 1980 1985 1990 ALGOL 58 ALGOL 60 SIMULA I SIMULA 67 PASCAL MODULA 2 OBERON MODULA 3 ADA

More information

Programming Languages

Programming Languages CS 345 Programming Languages Vitaly Shmatikov http://www.cs.utexas.edu/~shmat/courses/cs345/ slide 1 Course Personnel Instructor: Vitaly Shmatikov Office: CSA 1.114 Office hours: Tuesday, 3:30-4:30pm (after

More information

Fundamentals of Programming Languages

Fundamentals of Programming Languages A puzzle and a dilemma Suppose I want to capture/catch/slay crashing programs before they have a chance to run (=static type safety). Do I let this one go? let c = ref (fun x -> x) in c := (fun x -> x

More information

Compilers I Chapter 1: Introduction. What is a compiler? Basic compiler structure. Compiler. January 07

Compilers I Chapter 1: Introduction. What is a compiler? Basic compiler structure. Compiler. January 07 Compilers I Chapter 1: Introduction Lecturers: Part I: Paul Kelly (phjk@doc.ic.ac.uk) Office: room 423 Part II: Naranker Dulay (nd@doc.ic.ac.uk) Office: room 562 Materials: Textbook Course web pages (http://www.doc.ic.ac.uk/~phjk/compilers)

More information

Artificial Intelligence. Class: 3 rd

Artificial Intelligence. Class: 3 rd Artificial Intelligence Class: 3 rd Teaching scheme: 4 hours lecture credits: Course description: This subject covers the fundamentals of Artificial Intelligence including programming in logic, knowledge

More information

CMSC 430. Introduction to Compilers

CMSC 430. Introduction to Compilers CMSC 430 Introduction to Compilers Chau-Wen Tseng These slides are based on slides copyrighted by Keith Cooper, Linda Torczon & Ken Kennedy at Rice University, with modifications by Uli Kremer at Rutgers

More information

02-201: Programming for Scientists

02-201: Programming for Scientists 1. Course Information 1.1 Course description 02-201: Programming for Scientists Carl Kingsford Fall 2015 Provides a practical introduction to programming for students with little or no prior programming

More information

Evolution of the Major Programming Languages

Evolution of the Major Programming Languages 142 Evolution of the Major Programming Languages Object Oriented Programming: Smalltalk Object-Oriented: It s fundamental characteristics are: Data abstraction, Inheritance and Dynamic Binding. The essence

More information

Web-Based Database Applications ITP 300x (3 Units)

Web-Based Database Applications ITP 300x (3 Units) Web-Based Database Applications ITP 300x (3 Units) Objective Examination of the architecture and use of database-enabled web sites. Define the foundation for using relational databases on the web. Architectural

More information

Program Introduction Course Curriculum Individual Course Descriptions Core Courses... 7

Program Introduction Course Curriculum Individual Course Descriptions Core Courses... 7 Contents Program Introduction... 3 Course Curriculum... 4 Individual Course s... 7 Core Courses... 7 BCS Specialization Courses Database Development... 14 BCS Specialization Courses Software Engineering...

More information

Lesson 06: Basics of Software Development (W02D2

Lesson 06: Basics of Software Development (W02D2 Lesson 06: Basics of Software Development (W02D2) Balboa High School Michael Ferraro Lesson 06: Basics of Software Development (W02D2 Do Now 1. What is the main reason why flash

More information

Problem Solving With C++ Ninth Edition

Problem Solving With C++ Ninth Edition CISC 1600/1610 Computer Science I Programming in C++ Professor Daniel Leeds dleeds@fordham.edu JMH 328A Introduction to programming with C++ Learn Fundamental programming concepts Key techniques Basic

More information

MIS630 Data and Knowledge Management Course Syllabus

MIS630 Data and Knowledge Management Course Syllabus MIS630 Data and Knowledge Management Course Syllabus I. Contact Information Professor: Joseph Morabito, Ph.D. Office: Babbio 419 Office Hours: By Appt. Phone: 201.216.5304 Email: jmorabit@stevens.edu II.

More information

McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0

McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0 1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level

More information

High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)

High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser) High-Level Programming Languages Nell Dale & John Lewis (adaptation by Michael Goldwasser) Low-Level Languages What are disadvantages of low-level languages? (e.g., machine code or assembly code) Programming

More information

Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World

Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify

More information

Programming Languages

Programming Languages Programming Languages In the beginning To use a computer, you needed to know how to program it. Today People no longer need to know how to program in order to use the computer. To see how this was accomplished,

More information

Numerical Analysis. Professor Donna Calhoun. Fall 2013 Math 465/565. Office : MG241A Office Hours : Wednesday 10:00-12:00 and 1:00-3:00

Numerical Analysis. Professor Donna Calhoun. Fall 2013 Math 465/565. Office : MG241A Office Hours : Wednesday 10:00-12:00 and 1:00-3:00 Numerical Analysis Professor Donna Calhoun Office : MG241A Office Hours : Wednesday 10:00-12:00 and 1:00-3:00 Fall 2013 Math 465/565 http://math.boisestate.edu/~calhoun/teaching/math565_fall2013 What is

More information

Plan for this class. Welcome to Introduction to CS Theory. Logistics. Logistics. Logistics. Logistics. Logistics.

Plan for this class. Welcome to Introduction to CS Theory. Logistics. Logistics. Logistics. Logistics. Logistics. Plan for this class Welcome to 4003-380 Introduction to CS Theory Joe Geigel Syllabus & Ground Rules Student Info Forms / Attendance What is this Course About ------ break --------- Discrete Math Review

More information

03 - Lexical Analysis

03 - Lexical Analysis 03 - Lexical Analysis First, let s see a simplified overview of the compilation process: source code file (sequence of char) Step 2: parsing (syntax analysis) arse Tree Step 1: scanning (lexical analysis)

More information

CSC 272 - Software II: Principles of Programming Languages

CSC 272 - Software II: Principles of Programming Languages CSC 272 - Software II: Principles of Programming Languages Lecture 1 - An Introduction What is a Programming Language? A programming language is a notational system for describing computation in machine-readable

More information

CS 2302 Data Structures Spring 2015

CS 2302 Data Structures Spring 2015 1. General Information Instructor: CS 2302 Data Structures Spring 2015 Olac Fuentes Email: ofuentes@utep.edu Web: www.cs.utep.edu/ofuentes Office hours: Tuesdays and Thursdays 2:00-3:30, or by appointment,

More information

Computer Science Theory. From the course description:

Computer Science Theory. From the course description: Computer Science Theory Goals of Course From the course description: Introduction to the theory of computation covering regular, context-free and computable (recursive) languages with finite state machines,

More information

Course Goal CMSC 330: Organization of Programming Languages. Studying Programming Languages. All Languages Are (Kind of) Equivalent.

Course Goal CMSC 330: Organization of Programming Languages. Studying Programming Languages. All Languages Are (Kind of) Equivalent. Course Goal CMSC 330: Organization of Programming Languages Introduction Instructors: Michael Hicks and Anwar Mamat Learn how programming languages work Broaden your language horizons Different programming

More information

CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 18: Intermediate Code 29 Feb 08

CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 18: Intermediate Code 29 Feb 08 CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 18: Intermediate Code 29 Feb 08 CS 412/413 Spring 2008 Introduction to Compilers 1 Summary: Semantic Analysis Check errors not detected by lexical

More information

CS 525 Advanced Database Organization - Spring 2013 Mon + Wed 3:15-4:30 PM, Room: Wishnick Hall 113

CS 525 Advanced Database Organization - Spring 2013 Mon + Wed 3:15-4:30 PM, Room: Wishnick Hall 113 CS 525 Advanced Database Organization - Spring 2013 Mon + Wed 3:15-4:30 PM, Room: Wishnick Hall 113 Instructor: Boris Glavic, Stuart Building 226 C, Phone: 312 567 5205, Email: bglavic@iit.edu Office Hours:

More information

Programming Language Design and Implementation. Wes Weimer MW 2:00 3:15 Thornton E-303

Programming Language Design and Implementation. Wes Weimer MW 2:00 3:15 Thornton E-303 Programming Language Design and Implementation Wes Weimer MW 2:00 3:15 Thornton E-303 #1 Cunning Plan Who Are We? Wes, Kevin Leach, undergrad TAs Administrivia What Is This Class About? Brief History Lesson

More information

Chapter 6: Programming Languages

Chapter 6: Programming Languages Chapter 6: Programming Languages Computer Science: An Overview Eleventh Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Chapter 6: Programming Languages 6.1 Historical Perspective

More information

Program translation.

Program translation. Program translation. ffl On the very earliest computers programs were written and entered in binary form. ffl Some computers required the program to be entered one binary word at a time, using swithes

More information

COMP 110 Introduction to Programming. What did we discuss?

COMP 110 Introduction to Programming. What did we discuss? COMP 110 Introduction to Programming Fall 2015 Time: TR 9:30 10:45 Room: AR 121 (Hanes Art Center) Jay Aikat FB 314, aikat@cs.unc.edu Previous Class What did we discuss? 2 1 Today Announcements Still registering

More information

Computer Science. Requirements for the Major (updated 11/13/03)

Computer Science. Requirements for the Major (updated 11/13/03) Computer Science Faculty: Knox Chair; Komagata,, Martinovic, Neff, Sampath, Wolz Faculty from mathematics with joint teaching appointments in computer science: Conjura, Greenbaun, Iannone The computer

More information

2010-2011 Assessment for Master s Degree Program Fall 2010 - Spring 2011 Computer Science Dept. Texas A&M University - Commerce

2010-2011 Assessment for Master s Degree Program Fall 2010 - Spring 2011 Computer Science Dept. Texas A&M University - Commerce 2010-2011 Assessment for Master s Degree Program Fall 2010 - Spring 2011 Computer Science Dept. Texas A&M University - Commerce Program Objective #1 (PO1):Students will be able to demonstrate a broad knowledge

More information

CS 51 Intro to CS. Art Lee. September 2, 2014

CS 51 Intro to CS. Art Lee. September 2, 2014 CS 51 Intro to CS Art Lee September 2, 2014 Announcements Course web page at: http://www.cmc.edu/pages/faculty/alee/cs51/ Homework/Lab assignment submission on Sakai: https://sakai.claremont.edu/portal/site/cx_mtg_79055

More information

Compiler I: Syntax Analysis Human Thought

Compiler I: Syntax Analysis Human Thought Course map Compiler I: Syntax Analysis Human Thought Abstract design Chapters 9, 12 H.L. Language & Operating Sys. Compiler Chapters 10-11 Virtual Machine Software hierarchy Translator Chapters 7-8 Assembly

More information

Functional Programming. Functional Programming Languages. Chapter 14. Introduction

Functional Programming. Functional Programming Languages. Chapter 14. Introduction Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The

More information

Semantic Analysis: Types and Type Checking

Semantic Analysis: Types and Type Checking Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors

More information

Introduction. Compiler Design CSE 504. Overview. Programming problems are easier to solve in high-level languages

Introduction. Compiler Design CSE 504. Overview. Programming problems are easier to solve in high-level languages Introduction Compiler esign CSE 504 1 Overview 2 3 Phases of Translation ast modifled: Mon Jan 28 2013 at 17:19:57 EST Version: 1.5 23:45:54 2013/01/28 Compiled at 11:48 on 2015/01/28 Compiler esign Introduction

More information

Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages

Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages Announcements Programming Languages! Monday evening GBA section has been shut down " If you were assigned to this section, please find a different section " If you cannot attend a different section, please

More information

Compiler and Language Processing Tools

Compiler and Language Processing Tools Compiler and Language Processing Tools Summer Term 2011 Prof. Dr. Arnd Poetzsch-Heffter Software Technology Group TU Kaiserslautern Prof. Dr. Arnd Poetzsch-Heffter Compilers 1 Outline 1. Language Processing

More information

Programming Languages & Tools

Programming Languages & Tools 4 Programming Languages & Tools Almost any programming language one is familiar with can be used for computational work (despite the fact that some people believe strongly that their own favorite programming

More information

Bringing Performance and Scalability to. Dynamic Languages. Mario Wolczko Architect Virtual Machine Research Group Oracle Labs. Insert Picture Here

Bringing Performance and Scalability to. Dynamic Languages. Mario Wolczko Architect Virtual Machine Research Group Oracle Labs. Insert Picture Here Bringing Performance and Scalability to Insert Picture Here Dynamic Languages Mario Wolczko Architect Virtual Machine Research Group Oracle Labs 1 Copyright 2012, Oracle and/or its affiliates. All rights

More information

DIRECT PH.D. (POST B.S.) IN COMPUTER SCIENCE PROGRAM

DIRECT PH.D. (POST B.S.) IN COMPUTER SCIENCE PROGRAM DIRECT PH.D. (POST B.S.) IN COMPUTER SCIENCE PROGRAM OVERVIEW ADMISSION REQUIREMENTS PROGRAM REQUIREMENTS OVERVIEW FOR THE DIRECT PH.D. IN COMPUTER SCIENCE The Direct Ph.D. in Computer Science program

More information

Chapter 14. Programming and Languages. McGraw-Hill/Irwin. Copyright 2008 by The McGraw-Hill Companies, Inc. All rights reserved.

Chapter 14. Programming and Languages. McGraw-Hill/Irwin. Copyright 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 14 Programming and Languages McGraw-Hill/Irwin Copyright 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Competencies (Page 1 of 2) Describe the six steps of programming Discuss design

More information

Compiler Construction

Compiler Construction Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from

More information

AUTOMATIC EVALUATION OF COMPUTER PROGRAMS USING MOODLE S VIRTUAL PROGRAMMING LAB (VPL) PLUG- IN

AUTOMATIC EVALUATION OF COMPUTER PROGRAMS USING MOODLE S VIRTUAL PROGRAMMING LAB (VPL) PLUG- IN AUTOMATIC EVALUATION OF COMPUTER PROGRAMS USING MOODLE S VIRTUAL PROGRAMMING LAB (VPL) PLUG- IN Dominique Thiébaut Department of Computer Science Smith College Northampton, MA 01060 dthiebaut@smith.edu

More information

ICS 434 Advanced Database Systems

ICS 434 Advanced Database Systems ICS 434 Advanced Database Systems Dr. Abdallah Al-Sukairi sukairi@kfupm.edu.sa Second Semester 2003-2004 (032) King Fahd University of Petroleum & Minerals Information & Computer Science Department Outline

More information

Master of Science (M.S.), Major in Software Engineering

Master of Science (M.S.), Major in Software Engineering Texas State University 1 Master of Science (M.S.), Major in Software Engineering Admission Policy For information regarding admission application requirements and deadlines, please visit The Graduate College

More information

Sample Syllabus (C++) CSCI 1301 Introduction to Programming Principles

Sample Syllabus (C++) CSCI 1301 Introduction to Programming Principles Sample Syllabus (C++) CSCI 1301 Introduction to Programming Principles Knowledge Areas that contain topics and learning outcomes covered in the course Knowledge Areas Total Hours of Coverage Software Development

More information