Overview of the Course

Similar documents
UG3 Compiling Techniques Overview of the Course

Overview of the Class

Overview of the Class

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

Compiling Techniques

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

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

Compilers and Interpreters

Compilers. Computer Science 431

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

CMPE 152 Compiler Design

Principles of Compiler Construction ( )

Welcome. Orientation to online CPS102 Computer Science 2 (Java 2)

CSCI 565 Compiler Design and Implementation Spring 2014

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

CMPE 152 Compiler Design

CS/SE 153 Concepts of Compiler Design

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

ECE573 Introduction to Compilers & Translators

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

Principles of Compiler Construction ( )

CS 241 Data Organization using C

CS/SE 153 Concepts of Compiler Design

Compilers and Code Optimization EDOARDO FUSELLA

CISC 124: Introduction To Computing Science II

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

CMPE 152 Compiler Design

Compilers for Modern Architectures Course Syllabus, Spring 2015

Compiler Theory Introduction and Course Outline Sandro Spina Department of Computer Science

ECE : Fundamentals of Wireless Networking - Spring 2007

CS426 Compiler Construction Fall 2006

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

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

Intro. to Computer Network

Academic Course Description. EM2101 Computer Architecture

ECE 612: Embedded and Real-Time Systems

CS 406/534 Compiler Construction Putting It All Together

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

CPSC 2380 Data Structures and Algorithms

CS535: Interactive Computer Graphics

CS 525 Advanced Database Organization - Spring 2017 Mon + Wed 1:50-3:05 PM, Room: Stuart Building 111

San José State University College of Science/Department of Computer Science CS152, Programming Paradigms, Sections 1 & 2 Spring Semester, 2018

Academic Formalities. CS Language Translators. Compilers A Sangam. What, When and Why of Compilers

Introduction & First Content Comp 412

CS671 Parallel Programming in the Many-Core Era

Advanced Compiler Construction

CMPUT 391 Database Management Systems. Fall Semester 2006, Section A1, Dr. Jörg Sander. Introduction

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

programming exercises.

CS 553: Algorithmic Language Compilers (PLDI) Graduate Students and Super Undergraduates... Logistics. Plan for Today

Operating Systems, Spring 2015 Course Syllabus

CS 111: Programming Fundamentals II

Menu. Class 1: Introduction. Staff. Course Structure and Expectations. Contacting Us. Contacting You

(Movement - Synthesis) Improve existing programming skills by developing much larger and more complex programs than in previous classes.

Intermediate Representations

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

ECE Introduction to Compilers and Translation Engineering

CSC 111 Introduction to Computer Science (Section C)

Introduction to Computer Systems

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

First, the need for parallel processing and the limitations of uniprocessors are introduced.

Overview. COMP 506 Rice University Spring target code. source code Front End Optimizer Back End

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

Computer Science Technology Department

Object-Oriented Programming CSCI-UA

Intro. to Computer Network. Course Reading. Class Resources. Important Info.

Database Security MET CS 674 On-Campus/Blended

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

Real-Time Operating Systems M. Course Syllabus, Spring 2013

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164)

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

CS120 Computer Science I. Instructor: Jia Song

Cleveland State University

Spring 2016 :: CSE 502 Computer Architecture. Introduction. Nima Honarmand

Question Marks 1 /12 2 /6 3 /14 4 /8 5 /5 6 /16 7 /34 8 /25 Total /120

EEC-484/584 Computer Networks

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

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

CSC209H Lecture 1. Dan Zingaro. January 7, 2015

CS 4317: Human-Computer Interaction

Goals for Today. CS 133: Databases. Final Exam: Logistics. Why Use a DBMS? Brief overview of course. Course evaluations

HUDSON VALLEY COMMUNITY COLLEGE TROY, NEW YORK COURSE OUTLINE

CSC 4710 / CSC 6710 Database Systems. Rao Casturi

Module 1 - Class Introduction

Langara College Spring archived

CS 502 Introduction to Operating Systems. Fall 98 Waltham Campus

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

CMPT 354 Database Systems I. Spring 2012 Instructor: Hassan Khosravi

Langara College Spring archived

USC 227 Office hours: 3-4 Monday and Wednesday CS553 Lecture 1 Introduction 4

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

CS313T ADVANCED PROGRAMMING LANGUAGE

CS240: Programming in C

CSEP 501 Compilers. Overview and Administrivia Hal Perkins Winter /8/ Hal Perkins & UW CSE A-1

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

CISN 340 Data Communication and Networking Fundamentals Fall 2012 (Hybrid)

INF 315E Introduction to Databases School of Information Fall 2015

Languages and Automata

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

CSCD18: Computer Graphics. Instructor: Leonid Sigal

Transcription:

Overview of the Course

Critical Facts Welcome to CISC 471 / 672 Compiler Construction Topics in the design of programming language translators, including parsing, semantic analysis, error recovery, code generation, and optimization Instructor: Dr. John Cavazos (cavazos@cis.udel.edu) Office Hours: Mon 3-4PM / Wed 3-4PM or by appointment Office Hours Location: Saxbys Coffee (Amstel Ave) Text: Engineering a Compiler, second edition (2011) by Keith Cooper and Linda Torzcan Web Site: http://www.cis.udel.edu/~cavazos/cisc471-672-spring2018 Project handouts, lecture slides, online documentation, I will not have handouts in class; get them from the web

Difference between CISC471 and CISC672 Two main differences: 1. CISC471 have less challenging projects 1. CISC471 have less challenging midterm and final However, this will likely be the hardest class you take!

Basis for Grading Exams Midterm 20% Final 30% Projects Cool Test Programs 4% Scanner 5% Parser 8% Semantic Analyzer 14% Code Generation 15% This only adds up to 96%. Where is the other 4%? Class participation! Notice: Any student with a disability requiring accommodations in this class is encouraged to contact me after class or during office hours, and to contact UDel s Coordinator for Disabled Student Services.

Basis for Grading Exams Midterm Final Closed-notes, closed-book Projects Parser & Scanner Semantic Analyzer Code Generation First two projects (Test codes and Scanner) are individual projects Last three projects to be done in teams High ratio of thought to programming Will build a compiler for a language called COOL (Java)

Rough Syllabus Overview 1 Scanning 2 Parsing 3 Context Sensitive Analysis 4 Inner Workings of Compiled Code 6, 7 Introduction to Optimization 8 Instruction Selection 11 Instruction Scheduling 12 Register Allocation 13 More Optimization (time permitting)

Class-taking technique for Course I will use projected material extensively I will moderate my speed, you sometimes need to say STOP You should read the book Not all material will be covered in class Book complements the lectures You are responsible for material from class The tests will cover both lecture and reading I will probably hint at good test questions in class This is not a programming course Projects are graded on functionality, documentation, and lab reports more than style (results matter) It will take me time to learn your names (please remind me)

Compilers What is a compiler?

Compilers What is a compiler? A program that translates a program in one language into a program in another language The compiler should improve the program, in some way What is an interpreter?

Compilers What is a compiler? A program that translates a program in one language into a program in another language The compiler should improve the program, in some way What is an interpreter? A program that reads a program and produces the results of executing that program

Compilers What is a compiler? A program that translates a program in one language into a program in another language The compiler should improve the program, in some way What is an interpreter? A program that reads a program and produces the results of executing that program C is typically compiled, Scheme is typically interpreted Java is compiled to bytecodes (code for the Java VM) which can then interpreted Or a hybrid strategy is used Just-in-time compilation

Taking a Broader View Compiler Technology Offline Typically C, C++, Fortran Online Typically Java, C## Goals: improved performance and language usability Making it practical to use the full power of the language Trade-off: preprocessing time versus execution time (or space) Rule: performance of both compiler and application must be acceptable to the end user

Why Study Compilation? Compilers are important system software components They are intimately interconnected with architecture, systems, programming methodology, and language design Compilers include many applications of theory to practice Scanning, parsing, static analysis, instruction selection Many practical applications have embedded languages Commands, macros, formatting tags Many applications have input formats that look like languages, Matlab, Mathematica, Databases (e.g., Oracle) Writing a compiler exposes practical algorithmic & engineering issues Approximating hard problems; efficiency & scalability

Intrinsic interest Ø Compiler construction involves ideas from many different parts of computer science Artificial intelligence Algorithms Theory Systems Architecture Greedy algorithms Heuristic search techniques Graph algorithms, Dynamic programming DFAs & PDAs, pattern matching Fixed-point algorithms Allocation & naming, Synchronization, locality Pipeline & hierarchy management Instruction set use

Intrinsic merit Ø Compiler construction poses challenging and interesting problems: Compilers must do a lot but also run fast Compilers have responsibility for run-time performance Compilers are responsible for making it acceptable to use the full power of the programming language Computer architects perpetually create new challenges for the compiler by building more complex machines Compilers must hide that complexity from the programmer Success requires mastery of complex interactions of compiler phases

Aren t compilers a solved problem? Optimization for scalar machines is a problem that was solved ten years ago. David Kuck, Fall 1990

Aren t compilers a solved problem? Optimization for scalar machines is a problem that was solved ten years ago. David Kuck, Fall 1990 Architectures keep changing Languages keep changing Applications keep changing When to compile keeps changing

About the instructor My own research Applying machine learning to solve hard systems problems Compiling for advanced microprocessor systems Interplay between static and dynamic compilation Optimization for embedded systems (space, power, speed) Interprocedural analysis and optimization Nitty-gritty things that happen in compiler back ends Distributing compiled code in a heterogeneous environment Rethinking the fundamental structure of optimizing compilers Thus, my interests lie in Building Intelligent Compilers Quality of generated code(smaller, more efficient, faster) Interplay between compiler and architecture Static analysis to discern program behavior Run-time performance analysis

Next class The view from 35,000 feet How a compiler works What I think is important What is hard and what is easy