# CS243: Program Analysis and Optimization Winter 2014

This page is updated frequently, so check back often. All materials for the course will be posted here.### What do we teach?

This course teaches program analysis techniques used in compilers and
software development tools to improve productivity, reliability, and
security. *Emphasis on the methodology of applying mathematical
abstractions such as graphs, fixpoint computations and binary decision
diagrams to writing complex software, using compilers as an example.*

### How do you learn this?

This is a course where math and programming meet. Learning compiler techniques has much in common with learning mathematical proofs. You learn by trying, finding your own insights. This means the assignments can take a variable amount of time! We want you to formulate your own variations of problems and solve them.

### How is the course structured?

- Highly interactive lectures, textbook reading.
- Gradiance assignments explore mathematical concepts from lectures.
- Programming assignments analyze Java code.
- Problem sessions for discussion.
- Piazza for offline questions.
- Midterm and Final.

# Logistics When, where, what and how

Lectures | Mondays and Wednesdays 11:00am - 12:15pm in Gates B03 |

Problem Session | Friday 11:00am - 11:50am in Skilling Auditorium |

Prerequisites | CS 103 or CS 103B, and CS 107; Java programming language experience |

Textbook | Compilers: Principles, Techniques, & Tools (Second Edition), Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Addison-Wesley, 2007. |

Class Q&A Website | CS243 on Piazza - for all questions related to the material |

Videos of Lectures | SCPD Webcast for Stanford Students |

Staff Mailing List | for administrative questions |

Midterm | February 10 at Gates B03 |

Final | March 17 (Monday) 8:30am-11:30am at Gates B03 |

# Staff Professor and TA details

IMPORTANT Contact us using the for administrative questions.

### John Whaley, Instructor

Office | Gates 406 |

Office Hours | By arrangement via |

Contact Details |

### Jeffrey Ullman, Instructor

Office | Gates 425 |

Office Hours | By arrangement via |

Contact Details |

### Dror Maydan, Instructor

Office | TBA |

Office Hours | By arrangement via |

Contact Details |

### Darlene Hadding, Admin

Office | Gates 408 |

Phone | (650) 723-1430 |

### Sundaram Ananthanarayanan, TA

Office | Gates B24B |

Office Hours | Tuesday Thursday 5PM - 7PM |

Contact Details |

### Sujeet Gholap, TA

Office | Gates B24A |

Office Hours | Friday 3PM - 7PM |

Contact Details |

### Amritha Raghunath, TA

Office | Gates B26B |

Office Hours | Monday Wednesday 4PM - 6PM |

Contact Details |

# Tentative Schedule Subject to change

Date | Topic | Reading | Lecture notes | Assignment out | Assignment due |
---|---|---|---|---|---|

Jan 6 [M] | Introduction | 1.1-5, 8.4, 8.5, 9.1 | Lecture 1 Handout, Slides, Example | ||

Jan 8 [W] | Dataflow Analysis Introduction | 9.2 | Lecture 2 Slides 1 PDF 1 Slides 2 PDF 2 | ||

Jan 13 [M] | Dataflow Analysis Foundations | 9.3 | Lecture 3 Slides PDF | Gradiance | Jan 20 |

Jan 15 [W] | Constant Propagation, Loops | 9.4, 9.6 | Lecture 4 Slides PDF | ||

Jan 20 [M] | MLK day, no class | Gradiance | Jan 27 | ||

Jan 22 [W] | Constant Propagation, Loops | Lecture 5 Slides PDF | |||

Jan 27 [M] | Partial Redundancy Elimination | 9.5 | Lecture 6 Slides PDF | ||

Jan 29 [W] | Register Allocation | 8.8 | |||

Feb 3 [M] | Instruction Scheduling | 10.1-10.4 | |||

Feb 5 [W] | Software Pipelining | 10.5 | |||

Feb 10 [M] | Midterm | ||||

Feb 12 [W] | Dynamic Compilation | ||||

Feb 17 [M] | President's Day, no class | ||||

Feb 19 [W] | Pointer Analysis | 12 | |||

Feb 24 [M] | BDDs in Pointer Analysis | 12 | |||

Feb 26 [W] | BDDs in Pointer Analysis (cont) | 12 | |||

Mar 3 [M] | Data Dependence Analysis | 11.1-11.1.4, 11.6 | |||

Mar 5 [W] | Loop Transformations | 11.10-11.11 | |||

Mar 10 [M] | Garbage Collection | 7.4, 7.5, 7.6 | |||

Mar 12 [W] | Advanced Garbage Collection | 7.7, 7.8 | |||

Mar 17 [M] | Final (8:30 am - 11:30 am) in Gates B01 |

# Problem Sessions Friday 11:00am - 11:50am

Date | Problem Session |
---|---|

Jan 8 | No discussion section first week, but Professor Ullman will be holding office hours in his office (Gates 433) on Wednesday, January 8th from 1:00-3:00pm. |

# Handouts and Graded Assignments What happens with physical materials

CS243 will be using the Gradiance automated homework system for some of the required work. You should open your free account at www.gradiance.com/services and then sign up for the class using the "class token" FC5BC145.

Gradiance looks like multiple-choice questions, but it is really quite different. You are given problems to work out, just as you would in an ordinary homework. You are then given a multiple-choice question to test whether or not you have the correct solution. If you get a choice wrong, you are given a hint and encouraged to try again. You are allowed to try as many times as you like, and the goal is to get everything right eventually. To avoid repeated guessing on one problem at a time, you need to repeat all the questions each time you submit, and you will be given a different set of choices each time.

SCPD students: Please download the lecture notes before the lecture; the material will be available by the morning of the lecture. Your assignments will be returned via the SCPD courier. Since all the material for the assignments will be available on the web, you have to give your assignments to the SPCD courier (or hand it in electronically) on the same day as everybody else.

# Assignment Policy

#### Group Work

Homework will consist of both written and programming assignments. You are encouraged to work on the programming assignments in groups of two, but you must do the written assignments by yourself.

#### Late Policy

In general, no late assignments are accepted. However, you have two grace days for the entire quarter. That means you can be late by one day for two assignments, or use the two days up for one assignment.

#### Submission

Programming assignments will have specific submission instructions
included with the handouts. We will use a certain amount of
automatic grading to help us deal with the massive amounts of code
everyone submits, so *please follow the submission instructions
exactly as written!*

Written homework should be submitted via Gradiance, as described above. If you have any issues accessing the Gradiance site, please contact the TAs or instructors.

# Honor Code Cheating and Plagiarism is a no-no

You are free to discuss the assignment and solutions with others. However, you must write your own assignment, and must not represent any portion of others' work as your own. Anybody violating the honor code will be referred to the Judical-Affairs Office. If convicted, the normal penalty is a quarter suspension or worse.