COSC 170 Compiler Construction

Course Syllabus: Lectures
Office Hours
Textbooks
Objectives
Grading Policy
Schedule
Course Instructor: Dennis Brylow
Email: brylow at mscs dot mu dot edu
Office: Cudahy 380
Lectures
MWF 1:00PM - 1:50PM, CU 137
Office Hours
Mon/Wed 5:00PM - 6:00PM
Mon 7:00PM - 8:00PM
Fri 11:00AM - 12:00PM
MSCS Department Logo

Textbooks

Compilers Textbook Cover
Modern Compiler Implementation in Java.
Second Edition.
Andrew W. Appel with Jens Palsberg.
Cambridge.
We will be covering Chapters 1 through 12, the "Fundamentals of Compilation." The second half of the textbook consists of advanced topics more appropriate for a second, graduate-level compilers course.

Course Objectives

Upon completing this course, students will be able to:
  • Recognize various classes of grammars, languages, and automata, and employ these to solve common software problems;
  • Explain the major steps involved in compiling a high-level programming language down to a low-level target machine language;
  • Construct and use the major components of a modern compiler;
  • Work together effectively in teams on a substantial software implementation project.
  • Course Policies

    Grades will be calculated using the following formula:
    Projects 50%
    Written Homework 10%
    Exam #1 10%
    Exam #2 10%
    Exam #3 20%
  • Students must pass BOTH the exam portion of the grade AND and homework assignment portion of the grade to pass the course overall.
  • Assignments are to be completed individually, except when specifically noted otherwise. You may discuss course topics with your collegues, but written work and programmed code is not to be shared.
  • Academic dishonesty (claiming another person's work as your own) will not be tolerated. Infractions will result in immediate failure of the course, and referral to the Dean's office.
  • If you are not certain what constitutes fair play and what will be considered academic dishonesty, please ask the instructor.
  • Schedule

    Week Topics Readings Notes/Demos Assignments
    01 Introduction Ch 1,2 Project 1: Interpreter
    02 Lexical Analysis, Automata Ch 3 Project 2: Scanner
    03 Syntax Analysis, Grammars Ch 3 Homework 1: Automata and Grammars
    04 Parser Generators Ch 4 Project 3: Parser
    05 Abstract Syntax Trees Ch 5 Exam #1
    06 Semantic Analysis Ch 6 Project 4: Semantic Analysis
    07 Activation Records Ch 7
    08 IR Translation Ch 8
    09 Basic Blocks Ch 9 Project 5: Translation
    10 Instruction Selection Ch 10 Homework 2: Activation Records
    11 Liveness Analysis Ch 11 Exam #2
    12 Register Allocation Ch 11
    13 Register Allocation Ch 12 Project 6: Instruction Selection
    14 Advanced Topics
    15 Advanced Topics Homework 3: Register Allocation
    Final Exam #3
    The instructor reserves the right to adjust this schedule as necessary.

    Back
    [Revised 2009 Jan 16 12:27 DWB]