Overview of the Course. Critical Facts Welcome to CISC 672 — Advanced Compiler Construction Instructor: Dr. John Cavazos Office.

Slides:



Advertisements
Similar presentations
1 CIS 461 Compiler Design and Construction Fall 2014 Instructor: Hugh McGuire slides derived from Tevfik Bultan, Keith Cooper, and Linda Torczon Lecture-Module.
Advertisements

Syllabus Instructor: Dr. Wesam Ashour
Compiler Construction by Muhammad Bilal Zafar (AP)
Computer Science - I Course Introduction Computer Science Department Boston College Hao Jiang.
Compiler Construction
CSC 171 – FALL 2004 COMPUTER PROGRAMMING LECTURE 0 ADMINISTRATION.
Wrapping Up Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved.
Lecture 1CS 380C 1 380C Last Time –Course organization –Read Backus et al. Announcements –Hadi lab Q&A Wed 1-2 in Painter 5.38N –UT Texas Learning Center:
Introduction & Overview CS4533 from Cooper & Torczon.
Ananda Gunawardena (“Guna”) Summer 2010 Lecture 1 - Introduction.
WEEK 1 CS 361: ADVANCED DATA STRUCTURES AND ALGORITHMS Dong Si Dept. of Computer Science 1.
CS 21a: Intro to Computing I Department of Information Systems and Computer Science Ateneo de Manila University.
Computer Network Fundamentals CNT4007C
CS 3305 Course Overview. Introduction r Instructor: Dr Hanan Lutfiyya r Office: MC 355 r hanan at csd dot uwo ca r Office Hours: m Drop-by m Appointment.
COMPSCI 322: Language and Compilers Class Hour: Hyer Hall 210: TThu 9:30am – 10:15am.
1 MSCS 237 Distributed Computing Spring 2006 INSTRUCTOR: Dr. Sheikh Iqbal Ahamed Office: Cudahy Hall 386 Phone: Office Hours: Monday 2:00-3:00pm.
Winter 2015 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University Introduction and Overview.
COMP Introduction to Programming Yi Hong May 13, 2015.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2011 Course Overview John Cavazos University.
Computer Networks CEN 5501C Spring, 2008 Ye Xia (Pronounced as “Yeh Siah”)
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Overview of the Course Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University.
Overview of the Course Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University.
Course Introduction Software Engineering
20-753: Fundamentals of Web Programming 1 Lecture 1: Introduction Fundamentals of Web Programming Lecture 1: Introduction.
Computer Science 10: Introduction to Computer Science Dr. Natalie Linnell with credit to Cay Horstmann and Marty Stepp.
Compiler course 1. Introduction. Outline Scope of the course Disciplines involved in it Abstract view for a compiler Front-end and back-end tasks Modules.
Introduction and Overview Summer 2014 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University.
CSCI 51 Introduction to Computer Science Dr. Joshua Stough January 20, 2009.
8/19/2003CS 303 – Administrivia Lecture 0 1 Administrivia Labs Homework Grades Exams Quiz.
CISC Machine Learning for Solving Systems Problems John Cavazos Dept of Computer & Information Sciences University of Delaware
Computer Science 102 Data Structures and Algorithms CSCI-UA.0102 Fall 2012 Lecture 1: administrative details Professor: Evan Korth New York University.
COMP2012 Object-Oriented Programming and Data Structures Fall 2015.
Research Topics CSC Parallel Computing & Compilers CSC 3990.
CISC Machine Learning for Solving Systems Problems John Cavazos Dept of Computer & Information Sciences University of Delaware
1 EECS 6083 Compiler Theory Based on slides from text web site: Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved.
Introduction Fall 2001 Foundations of Computer Systems Prerequisite:91.166* or * Section A Instructor: Dr. David Hutchinson Office:
CS 460/660 Compiler Construction. Class 01 2 Why Study Compilers? Compilers are important – –Responsible for many aspects of system performance Compilers.
1 Compiler Design (40-414)  Main Text Book: Compilers: Principles, Techniques & Tools, 2 nd ed., Aho, Lam, Sethi, and Ullman, 2007  Evaluation:  Midterm.
Compiler Construction (CS-636)
Course Overview for Compilers J. H. Wang Sep. 14, 2015.
Princes Nora Bint Abdul Rahman University Dept. of Computer & Information Sciences CS 321 Computer Organization & Assembly Language Lecture 1 (Course Introduction)
Parallel and Distributed Computing Overview and Syllabus Professor Johnnie Baker Guest Lecturer: Robert Walker.
Data Structures and Algorithms in Java AlaaEddin 2012.
Lecture1 Instructor: Amal Hussain ALshardy. Introduce students to the basics of writing software programs including variables, types, arrays, control.
Computer Networks CNT5106C
Introduction and Overview Winter 2013 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University.
Lecture 02: Compiler Overview Kwangman Man ( SangJi University.
RAIK 283 Data Structures and Algorithms
COMP Compilers Lecture 1: Introduction
Computer Network Fundamentals CNT4007C
Advanced Computer Systems
Compiler Design (40-414) Main Text Book:
Chapter 1 Introduction.
Computer Networks CNT5106C
Chapter 1 Introduction.
CISC 7120X Programming Languages and Compilers
Computer Science 102 Data Structures CSCI-UA
Overview of the Course Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University.
COMP Compilers Lecture 1: Introduction
Wrapping Up Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit.
Lecture 02: Compiler Overview
Overview of the Course Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University.
CISC 7120X Programming Languages and Compilers
Compiler Construction
Dept. of Computer & Information Sciences (Course Introduction)
CS Problem Solving and Object Oriented Programming Spring 2019
Optimizing Compilers CISC 673 Spring 2009 Course Overview
Lecture 1 Class Overview
Presentation transcript:

Overview of the Course

Critical Facts Welcome to CISC 672 — Advanced Compiler Construction Instructor: Dr. John Cavazos Office Hours: Tues/Thurs 11 AM to 12 PM, Smith Hall 412 Text: Engineering a Compiler by Keith Cooper and Linda Torzcan Web Site:  Lab handouts, homework, slides (2 per page), practice exams, …  I will not have handouts in class; get them from the web Topics in the design of programming language translators, including parsing, semantic analysis, error recovery, code generation, and optimization Lab data is on the web site

Basis for Grading Exams  Midterm 20%  Final20% Quizzes 10% Projects  Scanner 7%  Parser 8%  Semantic Analyzer 15%  Code Generation 15% This only adds up to 95%. Where is the other 5%? 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 Quizzes Projects  Parser (& scanner)  Semantic Analyzer  Code Generation  Closed-notes, closed-book  Old exam on web site as an example  Reinforce concepts  Number of quizzes t.b.d.  Parser lab might be a team lab  High ratio of thought to programming  Will build a compiler for a language called COOL (in C++ or 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 CISC 672 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 CISC 672 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 an executable program in one language into an executable 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 an executable program in one language into an executable program in another language  The compiler should improve the program, in some way What is an interpreter?  A program that reads an executable program and produces the results of executing that program

Compilers What is a compiler?  A program that translates an executable program in one language into an executable program in another language  The compiler should improve the program, in some way What is an interpreter?  A program that reads an executable 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 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 Greedy algorithms Heuristic search techniques Algorithms Graph algorithms, Dynamic programming Theory DFAs & PDAs, pattern matching Fixed-point algorithms Systems Allocation & naming, Synchronization, locality Architecture 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

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 - SPEC CPU? –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