CS422 - Programming Language Design



Similar documents
07/15/10 Math E-10 Precalculus Fall Course Requirements

Fundamentals of Programming Languages

Program Analysis: Theory and Practice

CSE 307: Principles of Programming Languages

CS 341: Foundations of Computer Science II elearning Section Syllabus, Spring 2015

Today. Binary addition Representing negative numbers. Andrew H. Fagg: Embedded Real- Time Systems: Binary Arithmetic

COURSE SYLLABUS. Office Hours: MWF 08:30am-09:55am or by appointment, DAV 238

Functional Programming. Functional Programming Languages. Chapter 14. Introduction

MAC 1140 Reference # MWF 9:00 AM 9:50 AM Fall 2011 Rm. 3321

Prerequisite Math 115 with a grade of C or better, or appropriate skill level demonstrated through the Math assessment process, or by permit.

Monfort College of Business Semester Course Syllabus ( )

STUDENT INFORMATION PLAN AND SYLLABUS INCLUDING COURSE OUTLINE ACCOUNTING 2301, FINANCIAL ACCOUNTING FALL SEMESTER, 2015

Verifying Specifications with Proof Scores in CafeOBJ

Computer Science 281 Binary and Hexadecimal Review

Object-Oriented Software Specification in Programming Language Design and Implementation

CS 425 Software Engineering

Programming Languages

Automata and Formal Languages

CS 6371: Advanced Programming Languages

SPC Common Course Syllabus for PSYC 2316 Psychology of Personality

CS135 Computer Science I Spring 2015

Computer Science 1015F ~ 2010 ~ Notes to Students

CIS490 Design in Software Engineering. Course Syllabus for the Virtual Class

EE360: Digital Design I Course Syllabus

Office: D Instructor: Vanessa Jones. Phone: (714) Office Hours: Monday & Wednesday 1:30pm-2:30pm. Jones Vanessa@sccollege.

MATH 241: DISCRETE MATHEMATICS FOR COMPUTER SCIENCE, Winter CLASSROOM: Alumni Hall 112 Tuesdays and Thursdays, 6:00-8:15 pm

Programming Languages

Multimedia 320 Syllabus

Computer Engineering ECSE-322B

CS 425 Software Engineering. Course Syllabus

College of Southern Maryland Fundamentals of Accounting Practice(ACC 1015) Course Syllabus Spring 2015

Study Program Handbook Computer Science

CS 425 Software Engineering. Course Syllabus

COURSE TITLE COURSE DESCRIPTION

Fall 2012 Q530. Programming for Cognitive Science

ECE 156A - Syllabus. Lecture 0 ECE 156A 1

MAC 2233, STA 2023, and junior standing

COURSE SYLLABUS PHILOSOPHY 001 CRITICAL THINKING AND WRITING SPRING 2012

MATH 245 COLLEGE ALGEBRA Section :55 1:30

GRADUATE STUDENT SATISFACTION WITH AN ONLINE DISCRETE MATHEMATICS COURSE *

Advanced Database Management MISM Course F A Fall 2014

Psychology 314L (52510): Research Methods

SYLLABUS CIS 3660: OBJECT-ORIENTED SYSTEM ANALYSIS AND DESIGN SPRING 2010

F l o r i d a G u l f C o a s t U n i v e r s i t y S t a t i s t i c a l M e t h o d s F a l l C R N

Course Syllabus. COSC 1437 Programming Fundamentals II. Revision Date: August 21, 2013

Mathematics for Business Analysis I Fall 2007

CS 300 Data Structures Syllabus - Fall 2014

PHILOSOPHY OF THE MATHEMATICS DEPARTMENT

Math 143: College Algebra Spring Week Session

MATHEMATICAL TOOLS FOR ECONOMICS ECON FALL 2011

Phone: (773) Spring Office hours: MW 7:30-8:20 and 11:00-12:20, T 7:30-7:50 and 9:55-12:15

Preliminary Syllabus for the course of Data Science for Business Analytics

CS 649 Database Management Systems. Fall 2011

COURSE SYLLABUS ACCT 212 PRINCIPLES OF ACCOUNTING II

INSTRUCTOR INFORMATION Instructor: Adrienne Petersen Office: DMS 233 Office Hours: TuTh 11am-1pm by appointment

Tennessee Wesleyan College Math 131 C Syllabus Spring 2016

MATHEMATICS 152, FALL 2004 METHODS OF DISCRETE MATHEMATICS

Florida Gulf Coast University Finite Math M GF 1106 Spring 2014 CRN 11072

Lecture 8: Binary Multiplication & Division

Math 103, College Algebra Spring 2016 Syllabus MWF Day Classes MWTh Day Classes

Finance 471: DERIVATIVE SECURITIES Fall 2015 Prof. Liang Ma University of South Carolina, Moore School of Business

Syllabus for Accounting 300 Applied Managerial Accounting California State University Channel Islands Fall 2004

Management Science 250: Mathematical Methods for Business Analysis Three Semester Hours

Math 35 Section Spring Class meetings: 6 Saturdays 9:00AM-11:30AM (on the following dates: 2/22, 3/8, 3/29, 5/3, 5/24, 6/7)

MATH 115 Mathematics for Liberal Arts (3 credits) Professor s notes* As of June 27, 2007

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Sequence of Mathematics Courses

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

School of Computer Science

Computer Science. General Education Students must complete the requirements shown in the General Education Requirements section of this catalog.

University Of California, Berkeley Department of Mechanical Engineering. ME 204: Advanced Manufacturing Systems Analysis, AMS (3 units)

CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis. Linda Shapiro Winter 2015

GRADUATION REQUIREMENTS FOR THE COLLEGE OF ARTS AND SCIENCES, EFFECTIVE FALL 2013

How To Get A Computer Science Degree At Appalachian State

College Chemistry II CHM 111 Online

Department of Electrical and Computer Engineering. EEL 4730 Programming Embedded Systems Spring 2015

sensors and actuators? How do we handle the errors introduced due to noise, quantization etc?

ORGANIZATIONAL COMMUNICATION SYLLABUS SUMMER 2012

SYLLABUS MAC 1105 COLLEGE ALGEBRA Spring 2011 Tuesday & Thursday 12:30 p.m. 1:45 p.m.

Datavetenskapligt Program (kandidat) Computer Science Programme (master)

Master of Science in Information Technology (MS-IT)

Please consult the Department of Engineering about the Computer Engineering Emphasis.

LANGARA COLLEGE Course Outline

Course Syllabus. All Semester-based courses follow a 16 week calendar as detailed in the Course Schedule.

Guide to the MSCS Program Sheet

CSE532 Theory of Database Systems Course Information. CSE 532, Theory of Database Systems Stony Brook University

MTH 110: Elementary Statistics (Online Course) Course Syllabus Fall 2012 Chatham University

COMMUN 101: INTRODUCTION TO INTERPERSONAL COMMUNICATION

CS 3719 (Theory of Computation and Algorithms) Lecture 4

Brazosport College Syllabus for PSYC 2301 General Psychology

NEW YORK UNIVERSITY STERN SCHOOL OF BUSINESS Department of Accounting Principles of Financial Accounting (ACCT-UB.

Transcription:

1 CS422 - Programming Language Design General Information and Introduction Grigore Roşu Department of Computer Science University of Illinois at Urbana-Champaign

2 General Information Class Webpage and Newsgroup: http://fsl.cs.uiuc.edu/~grosu (go to Classes ) news://class.cs422 Lectures: Tuesdays/Thursdays 3:30-4:45, 1302 Siebel Center Office hours: Mondays 10:00-12:00, 2110 Siebel Center Instructor: Grigore Roşu Office: 2110 Siebel Center Email: grosu@cs.uiuc.edu WWW: http://cs.uiuc.edu/grosu Secretary: Andrea Whitesell (2106 SC, whitesel@uiuc.edu, 333-1043) Prerequisites: CS421 or equivalent, or instructor s approval

3 Textbooks No textbook required! Self contained lecture notes will be posted on class webpage. The following may be useful: 1) Friedman, Wand and Haynes, Essentials of Programming Languages, MIT Press, Second Edition, 2001 2) Winskel. The Formal Semantics of Programming Languages: An Introduction, MIT Press, 1993 Other sources The Maude Language: http://maude.cs.uiuc.edu Proceedings of Conferences on Programming Languages POPL (ACM Symp. on Principles of Prog. Lang.) PLDI (ACM Symposium on Programming Language Design and Implementation) OOPSLA (ACM Conference on Object Oriented Programming Systems, Languages and Applications)

4 Grading Students registered for 4 units Homework assignments (or MPs): 45% Final exam: 30% Individual project: 25% Students registered for 3 units Homework assignments: 60% Final exam: 40%

5 The Homework Assignments This is a labor intensive class. The notions presented in class will be often backed by machine supported formalizations which you are supposed to modify or redo entirely as part of your assignments and as part of your project Assignments will be complete approximately every 4 lectures, on Tuesdays, and are due the next Tuesday. The exercises in the lecture notes are of two types: regular exercises and homework exercises: Exercise. The regular exercises are intended to warm you up and to help you better understand other deeper notions. Homework Exercise. The homework exercises are those which you have to solve as part of your homework. Therefore, you have between 1 and 3 weeks for each exercise.

6 The Unit Project The unit project will consist of designing a new programming language with specified features. This language will most likely be an extended version of an existing language. The design will be formalized and an interpreter will be provided, which we will test against many carefully selected programs. The Final Exam The final exam will test your overall understanding of the concepts discussed in class, and it is expected to be consistent with your homework assignments scores.

7 Collaboration and Other Policies You are free to discuss the homework assignments with other students (and are encouraged to do so!). The focus of any such discussion should be limited to figuring the problem specification, not coming up with a solution. You may not jointly write or code any assignment. Todosowillbe considered cheating! All cheating will be penalized by automatically assigning a failing grade for the course and instigating further disciplinary action with the appropriate university disciplinary body. You should retain copies of your assignments until you receive your final grade. In the event of a discrepancy between your scores on assignments and those on the exams, you may be asked to explain any work you performed. Your grade may be adversely affected by an inability to explain your work or by

8 failure to retain copies of it. All students are required to take the exam in order to receive a grade in the course. The course has a newsgroup. You are encouraged to use this group to ask questions, answer mundane system questions for other students, discuss homeworks, etc. In consideration for your peers, please don t use it to post flames, irrelevant messages, ads, etc.

9 Course Description Advanced course on principles of programming language design Major language design paradigms will be investigated and mathematically defined (or specified), including: Static versus dynamic binding Call-by-value, reference, name, need Type checking and type inference Objects and classes, concurrency Since the rigorous definitional framework will be executable, interpreters for the designed languages will be obtained for free Software analysis tools reasoning about programs in these languages will arise naturally Major theoretical models will be discussed

10 Tentative Subjects Covered in CS422 Operational semantics, equational semantics, Maude, inductive language definitions, several styles of defining and/or designing a simple programming language, defining a functional programming language, defining static and dynamic type checkers, type inference, defining typed and untyped object oriented languages, continuation-based definitions, continuation-passing style transformations, exceptions, concurrency, logic programming, denotational semantics, lambda-calculus, defining program analysers, etc.

11 Course Objectives Present and define rigorously the major features and design concepts in programming languages Show how elegantly and easily one can design a programming language if one uses the right tools and framework Understand the significant theory of programming languages The practical objective of this course is not to implement programming languages, but rather to specify or define them formally and modularly, on a feature by feature basis Interpreters will, however, be obtained for free, because in the discussed framework one can execute specifications For that reason, we take the freedom to interchangeably use the words define and implement in this course

12 Specification versus Implementation What is the difference between specification and implementation? An intuitive way to think of them is to associate the first to the question WHAT and the second to the question HOW A specification says what properties a system should have, while an implementation says how those properties are achieved A specification declares the interface of a system as well as the operations that it can perform, together with properties that these must fulfill; e.g., addition is commutative. An implementation gives concrete implementations of these operations; it may require quite tricky algorithms. A specification can have many correct implementations. Such an implementation is said to satisfy the specification, and this is formally written Impl = Spec

13 An Example: Integer Numbers Integer numbers are part of any programming language that is worth its salt. What is the difference between specifying and implementing integer numbers? A specification of integer numbers may say There are some entities called integers There is some special integer called zero and written 0 There are two unary operations succ and pred There is some binary operation + These operators have lots of properties, including: succ and pred are inverse to each other + is associative, commutative and has 0 as identity ( X, Y : integer) succ(x)+y = succ(x + Y ) etc.

14 Atypicalimplementation of integer numbers may be based on a hardware binary representation. Let us consider for example one over k + 1 bits, known as one s complement: themost significant bit (the leftmost one) stays for the sign, 0 for positive and 1 for negative, and the remaining k bits stay for the absolute value of the integer number. Here, let s assume that overflows may lead to unpredictable results. Exercise 1 The one s complement binary implementation of integer numbers is not a correct implementation of integer numbers as specified above. Which properties are not satisfied? In this course we will consider an idealistic implementation of integers, in which they can have any finite number of digits. The Maude 2.0 language that we will use in this class provides such an idealistic built-in representation of integer numbers

15 Specifying Programming Languages In this course the emphasis will be on specifications of programming languages. For a desired programming language, say PL, the focus will be on devising a specification Spec(PL), defining all the important aspects of PL. Ideally, one would want to specify PL on a feature by feature basis, in a modular way. Supposing that F 1, F 2,...,F n are desired features of PL, such as static binding, call-by-reference, etc., with specifications Spec(F 1 ), Spec(F 2 ),..., Spec(F n ),then a major goal in this class is to define, or rather design, Spec(PL) as Compose(Spec(F 1 ), Spec(F 2 ),..., Spec(F n )), where Compose is some appropriate module, or specification, composition operator.

16 Important Notes and Advice The lecture notes for this class will be all posted on the web and will be as detailed as needed. The other textbooks may be useful as auxiliary material in order to have a better understanding of the discussed concepts. We will not use Scheme, ML or OCAML in this class as implementation languages! These are quite advanced programming languages; using them to implement interpreters hides some of the real important and interesting issues in specifying a programming language.