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

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

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

Introduction to Computer Science I

Concepts in Programming Languages

Welcome to Introduction to Computer Science I

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

CS 3304 Comparative Languages. Lecture 1: Introduction

Com S 541. Programming Languages I

CSCI 3136 Principles of Programming Languages

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

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

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

Programming Languages, Summary CSC419; Odelia Schwartz

Seminar in Programming Languages

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

Compiler Design Spring 2018

Languages october 22, 2017 Éric Lévénez < FORTRAN III end-1958 FORTRAN II FORTRAN I october 1956

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

COSE212: Programming Languages. Lecture 0 Course Overview

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

San José State University College of Science/Department of Computer Science CS 152, Programming Language Paradigms, Section 03/04, Fall, 2018

Concepts of Programming Languages

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

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

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

CS 242. Fundamentals. Reading: See last slide

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

CSc 372 Comparative Programming Languages

CSc 372. Comparative Programming Languages. 1 : Introduction. Department of Computer Science University of Arizona

Thanks! Review. Course Goals. General Themes in this Course. There are many programming languages. Teaching Assistants. John Mitchell.

Introduction. A. Bellaachia Page: 1

Beijing Jiaotong University CS-23: C++ Programming Summer, 2019 Course Syllabus

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

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

CSE 504: Compiler Design

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

CS240: Programming in C

Programming Language Concepts 1982, 1987, Outline. Period

CSc 372 Comparative Programming Languages

CSCI 201L Syllabus Principles of Software Development Spring 2018

CS 415 Midterm Exam Spring 2002

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

Compilers. Computer Science 431

Simply-Typed Lambda Calculus

COSC 2P90 Programming Languages & Object-Orientation

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

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

Lecture 1: Course Introduction

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

Programming Languages 2nd edition Tucker and Noonan"

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

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

SOFTWARE ARCHITECTURE 6. LISP

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

CS2303 C14 Systems Programming Concepts. Bob Kinicki

Programming Languages

CMPE 152 Compiler Design

Overview of the Class

Course and Contact Information. Course Description. Course Objectives

IA010: Principles of Programming Languages

Programmiersprachen (Programming Languages)

CSE4305: Compilers for Algorithmic Languages CSE5317: Design and Construction of Compilers

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

CSE 336. Introduction to Programming. for Electronic Commerce. Why You Need CSE336

CSCI.4430/6969 Programming Languages Lecture Notes

CSE4305: Compilers for Algorithmic Languages CSE5317: Design and Construction of Compilers

Logic Programming II & Revision

Comparative Programming Languages

ECE Object-Oriented Programming using C++ and Java

Why are there so many programming languages?

Introduction to.net, C#, and Visual Studio. Part I. Administrivia. Administrivia. Course Structure. Final Project. Part II. What is.net?

Overview of the Class

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

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

CSc 372. Comparative Programming Languages. 2 : Functional Programming. Department of Computer Science University of Arizona

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

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

Chapter 8 :: Subroutines and Control Abstraction. Final Test. Final Test Review Tomorrow

CMPT Data and Program Organization

CS 241 Data Organization using C

CS 3030 Scripting Languages Syllabus

Survey of Programming Languages Dr. R. M. Siegfried 407 Science (516) (not for homework submission)

Table 1 lists the projects and teams. If you want to, you can switch teams with other students.

cmpt 440/821 Advanced Topics in Programming Languages

Advanced Programming Concepts. CIS 15 : Spring 2007

G Programming Languages - Fall 2018

Introduction to Programming System Design CSCI 455x (4 Units)

General Course Information. Catalogue Description. Objectives

Course outline. CSE 341: Programming Languages. Why study programming languages? Course motivation and objectives. 1 lecture: Concepts

San José State University Computer Science Department CS49J, Section 3, Programming in Java, Fall 2015

CMPE 152 Compiler Design

CS A331 Programming Language Concepts

CS/SE 153 Concepts of Compiler Design

Programming (Econometrics)

Programming Languages 1. Introduction. Oscar Nierstrasz

Scoping and Type Checking

Math 2280: Introduction to Differential Equations- Syllabus

5. Special Purpose Languages

Introductory Example

Course and Contact Information. Course Description. Course Objectives

Transcription:

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 programming languages, both from the user s and implementor s view, and to develop precise mechanisms for specifying the semantics of programming languages. Copyright c 2003 C. Collberg Administrivia Christian Collberg January 15, 2003 CSc 520 Principles of Programming Languages University of Arizona Course Outline (Subject to change)... In particular, we will cover the following topics: Class : 520 PRINCIPLES OF PROGRAM- MING LANGUAGES Slide 0 3 1. scope of objects and time of binding 2. module mechanisms (e.g., blocks, procedures, coroutines) 3. data abstraction, datatypes 4. control structures 5. storage management and runtime support Slide 0 1 Lecturer : Christian Collberg Email : collberg@cs.arizona.edu WWW : http://www.cs.arizona.edu/ collberg Office : 758 Office Hours : Open door policy Phone : 621-6612 Lectures : 10:30-11:45, MW, GLD-S 701 6. operational, denotational, and axiomatic semantic specification; attribute grammars 7. applicative and object-oriented languages Book : Programming Language Pragmatics. Michael Scott TA : TBA,

Slide 0 6 Final Project Project topics should be finalized by Monday, March 1. Hand in a one-page synopsis of the project prepared using the L A TEX typesetting system. All topics must be OK:ed by the instructor. The synopsis is worth 5% of your final grade. Final project reports are due Tuesday, April 29. Reports must be prepared using the L A TEX typesetting system. They should be 10 pages long. The report is worth 10% of your final grade. Projects will be presented Wednesday, April 30 through Wedesday, May 7 (last day of classes). Presentations should be no more than 10 minutes long. The presentation is worth 5% of your final grade. Slide 0 4 Grading (Subject to change) 1. One final exam (40%), Friday, May 9, 11:00 13:00. (a) The exam is closed book. (b) Without prior arrangement, missed exam grade of zero. (c) Fail the exam you might fail the course. 2. Several homework assignments (40%). Homeworks will require programming and/or theoretical work. 3. One final project (20%). The project should be done in teams of two. Final Project... Grading (Subject to change)... Typical project topics might include: If your graded score for an homework is g and you handed in k Slide 0 7 Study some language that was not covered in class. Evaluate it using the ideas presented in class. Compare and contrast to similar languages. Write a program or two in the language to show what the language is good or bad at. Slide 0 5 days late, then your computed score for this assignment will be max(0, g(1 0.1k)) if k 5 0 otherwise Study a class of languages that was not covered in class. Study a programming paradigm that was not covered in class. Late project reports/synopsis will not be accepted!

Suggested Final Project Topics... Final Project... Slide 0 10 Other languages: Forth, APL/J, SETL. Parallel programming languages: Occam, Linda. Obfuscated languages: Brainf*ck, Befunge, Intercal. Scripting languages: Perl, Python, Tcl, Ruby, SNOBOL, JavaScript. Semantic description languages: Action semantics, Z. Slide 0 8 Read 2-3 theoretical programming language papers on a topic that interests you. Summarize and critique the papers. Study how some language feature not covered in class has been realized in a few programming languages. Write programs in each language to show how the feature impacts real programs. Compare, contrast, and critique. Slide 0 11 Suggested Final Project Topics... Novel paradigms: visual programming languages, multiparadigm programming languages (Leda), constraint programming languages, literate programming languages, mobile programming languages, aspect-oriented programming languages (AspectJ), dataflow programming languages, functional-logic programming. Language features: macros (Scheme), futures, module systems (ML), persistence (Napier88), input/output facilities. Implementation techniques: runtime code generation. Theory: Typed assembly language, proof-carrying code. Slide 0 9 Suggested Final Project Topics OO languages: Cecil, BETA, Eiffel, Obliq, Pizza, Sather, Simula, C#, Objective-C, Smalltalk. FP languages: Erlang, Hope, Sisal. LP languages: Mercury. Special purpose languages: compiler construction (Gentle), symbolic mathematics (Macsyma, Matlab, Mathematica), web programming (WebL, PHP), database programming (SQL, Mumps, RPG, COBOL), linking languages (Mesa), teaching languages (Pascal, Turing, Logo, ABC), typesetting languages (TEX/L A TEX, Postscript, PDF), architecture description languages (VHDL), computer gaming languages, robotic control languages.

3. A study of programming language constructs: Names and scope. Expressions. Course Organization (Subject to Change) Control structures (loops, iterators, short-circuit evaluation). Slide 0 14 Data types (type equivalence and inference, records, arrays, strings, pointers). Runtime organization (calling sequences, exceptions, nested procedures, coroutines, parameter passing, garbage collection). Slide 0 12 1. Introduction: Language design goals. Language translation systems. Object-oriented programming (single/multiple inheritance, dynamic dispatch, run-time typechecking). To study each feature you will write small interpreters (in Prolog) and/or small test-programs in several languages. 4. Formal description of programming languages: Lexical/syntactic specification (regular expressions, context free grammars, EBNF). 2. A survey of important programming languages and paradigms: Functional programming: Scheme and Gofer/Haskell. Concrete vs. abstract syntax. Logic programming: Prolog. Lambda calculus. Procedural programming: Pascal, Modula-2, Ada. Slide 0 15 Semantic specification (denotational, axiomatic, and operational specification, attribute grammars). Slide 0 13 Object-Oriented programming: Modula-3 and C++. String programming: Icon. I will lecture on each language. You will be responsible for You will write formal specifications of small languages. reading up on the details of the languages. This will involve getting out books from the library, searching the web for relevant tutorials, etc. There will be one small programming assignment for each language.

Handouts & Other Material You will not Academic Integrity 1. turn in another student s work as your own. Slide 0 18 1. I always make copies of my transparencies available to students. Note that I do this to relieve you of having to take notes during lectures, they are not substitutes for reading the textbook, their primary purpose is to remind you of what you need to study for the exam. Slide 0 16 2. use material from the web, textbooks, journals, etc. without giving the appropriate attribution. 3. accept solutions from other students. 4. give solutions to other students. 5. tamper with graded papers or exams. 6. collaborate with students outside your own team. Sanctions typically include: grade reduction, course failure, suspension, expulsion. I take this stuff seriously. Handouts & Other Material... Academic Integrity... Students who violate the Code are also subject to possible sanctions imposed by the Dean of Students office. Slide 0 19 2. Various manuals and papers will be handed out during class. Extra copies can be picked up from the boxes outside my office. 3. Various information regarding the course (including postscript files of the handouts) can be found on the info-bahn: http://www.cs.arizona.edu/~collberg/ Teaching/520/2003/index.html Slide 0 17 Submitted solutions will be compared with each other, as well as with solutions from previous semesters. All students involved in collusion are equally culpable: 1. Do not give another student access to your account. 2. Do not leave printouts in the recycling bin. 3. Pick up your printouts promptly. 4. Do not leave your workstation unattended. If you suspect that your work has been compromised notify me immediately.

Free Compilers and Interpreters Ada: ftp://wuarchive.wustl.edu/languages/ada/compiler/ gnat/distrib/3.14p Slide 0 20 Scheme: http://www.drscheme.org Modula-2: http://floppsie.comp.glam.ac.uk/glamorgan/ gaius/web/gnumodula2.html Modula-3: http://www.m3.org Gofer: ftp://ftp.dcs.gla.ac.uk/pub/haskell/gofer. Also see http://www.idiom.com/free-compilers. Slide 0 21 Installed Translators Compilers and interpreters available on lectura: Pascal: gpc Scheme: scheme and scheme48. C,C++,Objective-C: gcc. ML: sml. Icon: icont. Prolog: prolog. Compilers and interpreters available on linux: Gofer: /home/cs520/2003/bin/linux/gofer