CSE 504: Compiler Design

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

General Course Information. Catalogue Description. Objectives

ECE573 Introduction to Compilers & Translators

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

Philadelphia University Faculty of Information Technology Department of Computer Science --- Semester, 2007/2008. Course Syllabus

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

Compilers for Modern Architectures Course Syllabus, Spring 2015

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

CS 241 Data Organization using C

EECE.2160: ECE Application Programming Spring 2017

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

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

Announcements. 1. Forms to return today after class:

CSCI 565 Compiler Design and Implementation Spring 2014

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

CASPER COLLEGE COURSE SYLLABUS MSFT 1600 Managing Microsoft Exchange Server 2003 Semester/Year: Fall 2007

San José State University Computer Science CS 122 Advanced Python Programming Spring 2018

Course and Contact Information. Course Description. Course Objectives

San José State University Department of Computer Science CS049J, Programming in Java, Section 2, Fall, 2016

Object-Oriented Programming for Managers

Translator Design CRN Course Administration CMSC 4173 Spring 2017

BIRLA INSTITUTE OF TECHNOLOGY AND SCIENCE, Pilani Pilani Campus Instruction Division

CMPE 152 Compiler Design

15-411/ Compiler Design

CS 4120 and 5120 are really the same course. CS 4121 (5121) is required! Outline CS 4120 / 4121 CS 5120/ = 5 & 0 = 1. Course Information

ESET 349 Microcontroller Architecture, Fall 2018

EECE.2160: ECE Application Programming Spring 2019

Course and Contact Information. Course Description. Course Objectives

GET 433 Course Syllabus Spring 2017

INFS 2150 (Section A) Fall 2018

CSc 2310 Principles of Programming (Java) Jyoti Islam

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

CS503 Advanced Programming I CS305 Computer Algorithms I

CS 471 Networking and Distributed Operating Systems

Introduction to UNIX

Compilers. Computer Science 431

INST Database Design and Modeling - Section 0101 Spring Tentative Syllabus

Central Washington University Department of Computer Science Course Syllabus

NOTE: This syllabus is subject to change during the semester. Please check this syllabus on a regular basis for any updates.

CPS352 Database Systems Syllabus Fall 2012

CPS352 - DATABASE SYSTEMS. Professor: Russell C. Bjork Spring semester, Office: KOSC 242 x4377

CS 241 Data Organization. August 21, 2018

CS 150 Introduction to Computer Science 1

CSE 240 Introduction to Computer Architecture

San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968)

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

San José State University Computer Science Department CS157A: Introduction to Database Management Systems Sections 5 and 6, Fall 2015

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

Course Syllabus - CNT 4703 Design and Implementation of Computer Communication Networks Fall 2011

ce Hours: MW 12:30 PM 1:30 PM (till 12/12/18), or by appointment

Syllabus of ENPM 691: Secure Programming in C

CSCI 528: OBJECT ORIENTED PROGRAMMING, Fall 2015

San Jose State University College of Science Department of Computer Science CS185C, Introduction to NoSQL databases, Spring 2017

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

CS 375 UNIX System Programming Spring 2014 Syllabus

1. General Information Course Title: CSCI-605 Advanced Object-Oriented Programming Concepts Instructor: Hans-Peter Bischof Office: Telephone:

C Programming for Engineers Introduction

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

San José State University Department of Computer Science CS-144, Advanced C++ Programming, Section 1, Fall 2017

MWF 9:00-9:50AM & 12:00-12:50PM (ET)

Translator Design CRN Course Administration CMSC 4173 Spring 2018

ESET 369 Embedded Systems Software, Spring 2018

CSCI 434 INTRODUCTION TO LOCAL AREA NETWORKS (SPRING 2015)

ESET 369 Embedded Systems Software, Fall 2017

CMPE 152 Compiler Design

The University of Iowa. 22c181: Formal Methods in Software Engineering. Spring Course Overview

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

Advanced Programming CMPS 109

CS/SE 153 Concepts of Compiler Design

NOTE: This syllabus is subject to change during the semester. Please check this syllabus on a regular basis for any updates.

Sprint 2017, Sul Ross State University

CSCE 441 Computer Graphics Fall 2018

Optimized C++ o Websites and handouts Optional: Effective C++, Scott Meyers. Fall 2013

Programming 1. Outline (111) Lecture 0. Important Information. Lecture Protocol. Subject Overview. General Overview.

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

You must pass the final exam to pass the course.

Dr. Angela Guercio Dr. Natalia Dragan. Spring 2011

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

CISC 3130 Data Structures Spring 2018

Programming 2. Outline (112) Lecture 0. Important Information. Lecture Protocol. Subject Overview. General Overview.

COURSE SYLLABUS ****************************************************************************** YEAR COURSE OFFERED: 2015

San Jose State University - Department of Computer Science

Programming Languages CSCE

INF 315E Introduction to Databases School of Information Fall 2015

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

CMPE 152 Compiler Design

San Jose State University College of Science Department of Computer Science CS185C, NoSQL Database Systems, Section 1, Spring 2018

Course Title: Computer Networking 2. Course Section: CNS (Winter 2018) FORMAT: Face to Face

ECE Object-Oriented Programming using C++ and Java

CSE 114, Computer Science 1 Course Information. Spring 2017 Stony Brook University Instructor: Dr. Paul Fodor

CSCI 201L Syllabus Principles of Software Development Spring 2018

CSCD18: Computer Graphics. Instructor: Leonid Sigal

Advisory: Students should have already taken MICROCOMPUTER APPLICATIONS II - 431

SRM UNIVERSITY FACULTY OF ENGINEERING AND TECHNOLOGY SCHOOL OF COMPUTING DEPARTMENT OF CSE COURSE PLAN

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

Course Title: Network+/Networking Fundamentals. Course Section: CNS-101-I1. FORMAT: Online

ITP454 Enterprise Resource Planning, Design, and Implementation

Geography 3300: Transportation Security

USC Viterbi School of Engineering

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

Transcription:

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: cram@cs.stonybrook.edu Office: 1420, Computer Science Office Hours: Tue. 12noon 1pm; Wed. 11:30am 1pm; or by appointment http://www.cs.stonybrook.edu/~cram Last modifled: Mon Jan 26 2015 at 17:11:54 EST Version: 1.4 08:02:42 2013/02/05 Compiled at 17:16 on 2015/01/26 Compiler Design Course Organization CSE 504 2 / 20

Prerequisites Courses: CSE 219 or 260: Advanced Programming in an HLL CSE 220: Systems-Level Programming CSE 303: Automata Theory At least one of the following: CSE 304: CSE 307: Compiler Design (undergraduate) Principles of Programming Languages Programming Experience: Significant programming experience in multiple languages. Ability (and a willingness) to adapt to new languages and tool chains. Compiler Design Course Organization CSE 504 3 / 20 Course Outcomes At the end of the course, students are expected to have: An ability to use of formal attributed grammars for specifying the syntax and semantics of programming languages. Working knowledge of the major phases of compilation, particularly lexical analysis, parsing, semantic analysis, and code generation. An ability to design and implement a significant portion of a compiler for a language chosen by the instructor. Informal Statement of Course Objective: To learn the process of translating a modern high-level language to executable code. Learn the fundamental techniques from lectures, text book and exercises from the book. Apply these techniques in practice to construct a fully working compiler for a non-trivial object-oriented language called Proto. Compiler Design Course Organization CSE 504 4 / 20

Organization Concepts and basic ideas in the lectures. Aho, Lam, Sethi, Ullman Compilers: Principles, Techniques, and Tools (2nd ed., Addison Wesley) Concrete implementation in a series of programming homework assignments. Unlike earlier years (and similar courses in many other places)... we ll build a series of working compilers... progressively adding language and compiler features. Compiler Design Course Organization CSE 504 5 / 20 Grading Homework assignments 35% Informal project presentation 10% One mid-term exam 25% Comprehensive final exam 30% Letter grades: 80% or above: definite A, provided: at least 5 non-trivial homework submissions 70% or better in the exams 50% or above: definite C+ or better provided: at least 3 non-trivial homework submissions 35% or better in the exams Compiler Design Course Organization CSE 504 6 / 20

The Rules of the Game Programming assignments: Individual work. Late submissions (submitted up to 3 days late) will be graded normally, but have the following maximum score limit: Late Days Max. On time 100% 1 day late 75% 2 days late 50% 3 days late 25% 4 days late 0% No late penalty (up to 3 days) for 1 assignment of your choice! You should send me mail ahead of the submission deadline if you want to use this penalty-free late days for any assignment. Compiler Design Course Organization CSE 504 7 / 20 Your Responsibilities Limit discussion of homework assignments to problems, not solutions. Cheating, illegal collaboration and plagiarism will be treated with maximum seriousness. Grad students will be referred to the Graduate Program Director. Conviction of academic dishonesty carries substantial penalties, such as receiving an F grade, and/or expulsion from the University. See syllabus on course web page for details. Compiler Design Course Organization CSE 504 8 / 20

The Importance of Being Earnest U.S. NEWS DISCUSS AS: Sign in 92 nuclear missile officers implicated in cheating scandal, Air Force says Thursday Jan 30, 2014 12:25 PM http://lmgtfy.com/?q=nuclear+miss ile+officers+cheating Compiler Design Course Organization CSE 504 9 / 20 The Importance of Being Earnest http://commons.wikimedia.org/wiki/file% 3ARichard_M._Nixon%2C_ca._1935_-_1982_-_NARA_ -_530679.jpg Compiler Design Course Organization CSE 504 10 / 20

The Importance of Being Earnest http://commons.wikimedia.org/wiki/file% 3ALance_Armstrong_Aviano.jpg Compiler Design Course Organization CSE 504 11 / 20 The Importance of Being Earnest PRO FOOTBALL League Probing Patriots' Possible Use of Deflated Balls By REUTERS JAN. 19, 2015, 11:20 A.M. E.S.T. http://www.nytimes.com/reuters/2015/01/19/ sports/football/19reuters- nfl- patriots.html Compiler Design Course Organization CSE 504 12 / 20

Outline Effort Level The effort required by this course is High but so are the rewards: Hands on experience in large-scale programming (this semester: in Python???). Exposure to inner workings of Object-Oriented and Functional programming. In-depth knowledge of how programs written in high-level languages are translated and executed. Compiler Design Course Organization CSE 504 13 / 20 Course Structure Outline Compilers in this course will be written in??? (language to be decided). You will write compilers for a sequence of increasingly complex languages all of which will be confusingly called as Proto. Your compilers will translate Proto programs to MIPS code and run the result using the MIPS simulator SPIM. Source Program (Proto) Your Compiler (written in????) Protoplasm Target Program (MIPS) Compiler Design Course Organization CSE 504 14 / 20

Outline Proto This is a tentative plan for the language Proto. Each language version adds features to the earlier ones. 1 Proto Proto, a calculator language: Integer constants, variables over integers, integer arithmetic expressions, sequences of assignments. 2 Control structures: Conditional statements, loops. 3 Data structures: Other basic types such as Booleans; structured types such as records and arrays. 4 Procedures: Functions and procedures, variable and type declarations. 5 Objects: Inheritance and overloading. Compiler for each language level will be a separate homework assignment. Compiler Design Course Organization CSE 504 15 / 20 MIPS Outline A RISC machine that is very widely used in Assembly Language Programming and Architecture courses (including our own CSE 220). SPIM is a MIPS simulator, also widely used for running and debugging MIPS assembly programs. I ll assume familiarity with programming in assembly language in general, and MIPS in particular. If you are have not familiar, be prepared to pick it up really quickly. Compiler Design Course Organization CSE 504 16 / 20

Infrastructure Course Software SPIM is available for most machines; download and install it on your machine for testing the results of your compiler. Get git if you don t have it already. The course web site has links to tutorials and documentation for MIPS assembly language, SPIM and git. If you find more useful references, let me know! Compiler Design Course Organization CSE 504 17 / 20 Instructional Support Infrastructure All course material, including homework handouts, notes, etc. will be posted on the course web site. We will use the Blackboard system for Course Announcements (check these regularly) Course Discussion Board Feedback and Grades on assignments I m going to experiment with submitting assignments via git. If that works out for the first assignment, we ll use it for the remainder of the course. If there are issues with it, we ll default to the Blackboard for assignment submission. Compiler Design Course Organization CSE 504 18 / 20

Course Discussion Board Infrastructure Use this to discuss any course-related material: lectures, homework problems, exams, etc. If you have any questions on the material, first check to see if any one else had the same question as you have, and whether the question has been answered already; otherwise post the question on the board. We ll try to answer all questions on the board asap: within 24 hrs for normal days, and much quicker near exam/homework deadlines. Compiler Design Course Organization CSE 504 19 / 20 Questions Infrastructure How to contact course staff: Staff contact information is on the web page/blackboard. Post your question on the discussion board. Meet me during my office hours (or fix an appointment). Send me email. (Post on discussion board unless the question is personal.) Contact TA (to be announced) by visiting him/her during office hours or by email. Grading related questions: send email to the TA (who grades your homework assignments) first; if unresolved, send me email. Compiler Design Course Organization CSE 504 20 / 20