cc17:top

**Note:**
This is an archival version of the course.
Next edition is Compiler Construction 2018

— — — — — — — — — — — — — —

**Instructor:** Hossein Hojjat

**Email:** hh at cs rit edu

** Office hours (GOL-3545):**

- Tu 11am – 12am
- Th 11am - 12am

**Lectures:** MoWeFr 9:00AM-9:50AM (GOL-3455)

**Final Exam:**
5/15/2017 (8 - 10 AM) ,
Place: GOL-3455

**Description & Policies:**

CS Common Course Policies

Grading Policies

Assignment & Homework Policies

**Acknowledgements:**

Portions of this course material based upon similar courses offered by Viktor Kuncak

**Book:**

Modern Compiler Implementation in Java

**Language for Compiler Project:**

Extended MiniJava (eMiniJava)

Monday 01/23 | Lecture 1: Course Overview | Slides |

Wednesday 01/25 | Lecture 2: Describing Syntax | Slides |

Friday 01/27 | Lecture 3: Introduction to Regular Expressions | Slides |

Monday 01/30 | Lecture 4: Manual Construction of Lexers | Slides |

Wednesday 02/01 | Lecture 5: Automatic Construction of Lexers | Slides |

Friday 02/03 | Lecture 6: DFA vs. NFA | Slides |

Monday 02/06 | Lecture 7: Regular Expression-Automata Conversion | Slides |

Wednesday 02/08 | Lecture 8: DFA Minimization | Slides |

Firday 02/10 | Lecture 9: Context-Free Grammars | Slides |

Monday 02/13 | Lecture 10: Ambiguous Grammars | Slides |

Wednesday 02/15 | Lecture 11: Chomsky Normal Form (CNF) | Slides |

Friday 02/17 | Discussion of solutions to Homework 1 |

Monday 02/20 | Lecture 12: Cocke-Younger-Kasami (CYK) | Slides |

Wednesday 02/22 | Lecture 13: Grammar Transformations | Slides |

Friday 02/24 | Lecture 14: Top-Down vs. Bottom-up Parsing | Slides |

Monday 02/27 | Lecture 15: Recursive-Descent Parsers | Slides |

Wednesday 03/01 | Lecture 16: Implementing Recursive-Descent Parsers | Slides |

Friday 03/03 | Lecture 17: Introduction to Shift/Reduce Parsing | Slides |

Monday 03/06 | Lecture 18: LR(0) Parsing | Slides |

Wednesday 03/08 | Lecture 19: SLR and LR(1) Parsing | Slides |

Friday 03/10 | Lecture 20: Parsing Wrap-up | Slides |

Spring Break - No Classes

Monday 03/20 | Lecture 21: Introduction to Name Analysis | Slides |

Wednesday 03/22 | Lecture 22: Name Analysis Implementation | Slides |

Friday 03/24 | Lecture 23: Introduction to Type Checking | Slides |

Monday 03/27 | Lecture 24: Type Checking Implementation | Slides |

Wednesday 03/29 | Discussion of solutions to Homework 2 | |

Friday 03/31 | Lecture 25: More Type Rules | Slides |

Monday 04/03 | Lecture 26: Subtyping | Slides |

Wednesday 04/05 | Lecture 27: More Subtyping Rules | Slides |

Friday 04/07 | Lecture 28: Introduction to Code Generation | Slides |

Monday 04/10 | Lecture 29: Code Generation for Expressions | Slides |

Wednesday 04/12 | Discussion of solutions to Homework 3 | |

Friday 04/14 | Lecture 30: A Primer on Jasmin | Slides |

Monday 04/17 | Lecture 31: Code Generation for Control Structures | Slides |

Wednesday 04/19 | Lecture 32: Control Structures: Efficient Translation | Slides |

Friday 04/21 | Lecture 33: Introduction to Optimizations | Slides |

Monday 04/24 | Lecture 34: Control Flow Graphs | Slides |

Wednesday 04/26 | Lecture 35: Live Variable Analysis | Slides |

Friday 04/28 | Discussion of solutions to Homework 4 |

Monday 05/01 | Lecture 36: Available Expressions Analysis | Slides |

Wednesday 05/03 | Lecture 37: Data-flow Analysis Framework | Slides |

Friday 05/05 | Lecture 38: More Data-flow Analysis | Slides |

Monday 05/08 | Lecture 39: Loop Optimizations | Slides |

Wednesday 05/10 | Lecture 40: Register Allocation | Slides |

Friday 05/12 | Course Conclusion |

cc17/top.txt · Last modified: 2018/01/11 16:52 by hossein