CSC 4181 Compiler Construction Spring 2019

Sections 001 & 002

SCHEDULE

Dr. Thomas Way


Schedule is subject to change during the semester.  Please check the online version on the course website from time to time.
#
Date
Topics, Assignments, Activities
1

T 1/15

Welcome, Course Overview

Accumulator machine example (pdf)

  Th 1/17 Overview of Compilers, Part 1 (pdf)

Lab 1: Using the framework provided in this checker web page, develop two validation parsers that validate mathematical expressions, as specified in this handout. Feel free to use online resources, including those listed on the class Resources page. Check with me if you would like to use a different programming language to create a validator. Due in-class: 1/31/19

Modified version of checker from class 1/17/19 (checker_v2.html)

2 T 1/22 Overview of Compilers, Part 2 (pdf)
CS Help Desk Information (link)

Modified version of checker from class 1/22/19 (checker_v3.html)

  Th 1/24 Overview of Compilers, Review

Lab working time

Resource: Regexr, a web page for designing and testing regular expressions

Modified version of checker from class 1/24/19 (checker_v4.html)

3 T 1/29 Lexical Analysis (pdf)

Lab working time

Modified version of checker from class 1/29/19 (checker_v5.html)

  Th 1/31 Lexical Analysis (cont'd)
Read for next class: Introduction to Compiler Design, Part 1, Lexical Analysis

Lab working time
Lab 1 new due date: Tues. 2/05/19
Lab 1 modification: remove -integer rule from number in the grammar

Modified version of checker from class 1/31/19 (checker_v6.html)

4 T 2/05 Lexical Analysis (cont'd)
Parse trees, syntax trees, syntax errors, semantic errors (pdf)

Homework 1 - Parse Trees and Syntax Trees - due Tue. Feb. 12, 2019

Lab 1 due, demonstrate during class meeting (checker_tests.txt)

  Th 2/07 Context Free Grammars (pdf)(pptx)

Lab 2 - Scanner Generation (assignment)
Homework 1 questions & Lab 2 working time
 

5 T 2/12 Context Free Grammars (cont'd)

Lab 2 working time

Homework 2 - Parse Trees and Syntax Trees - due Tue. Feb. 19, 2019

Homework 1 due today

  Th 2/14 Context Free Grammars (cont'd)

Lab 2 working time

6 T 2/19 Parsing (pdf)

Lab 2 working time

Review Homework 1

Homework 2 due today

  Th 2/21 Parsing (cont'd)

Lab 2 due today, demo & eval during class meeting (note this is an earlier due date)
Lab 2 evaluation form (pdf)

Lab 3 - Parser Generation (assignment) - due Thur. March 21, 2019

7 T 2/26 Software Engineering (pdf) (slides 1-20)

Review Homework 2
  Th 2/28 No formal class meeting
Zoom or Skype meetings as needed for Lab 3 questions

Watch the following to gain context on yacc, noting these videos talk about the C version rather than the Java version that we are using. The approach and ideas, however, are identical.

Independent lab working time, Lab 3 set up
Students are required to confirm Lab 3 set up is complete

8
T 3/05
Th 3/07

Semester Break - no class meetings
9
T 3/12
Software Engineering (cont'd) (slides 21-28)
Agile Manifesto (handout)

Lab 3 working time

Lab 3 examples we developed in class
(labs\lab3\examples\example_mathexpr.flex)
(labs\lab3\examples\example_mathexpr.y)

  Th 3/14 Parsing (pdf)(ppt) (cont'd)

Lab 3 working time

10 T 3/19 Parsing (cont'd)

Lab 3 due today, demonstrate during class meeting

Lab 4 - Building a Complete Compiler (assignment)

  Th 3/21

Parsing (cont'd)

Independent lab 4 working time

11 T 3/26 Parsing (cont'd)

Handout: Constructing LL(1) Parsing Tables

Homework 3 - Grammars and Parse Tables - due Tue. April 2, 2019

Lab 4 working time

  Th 3/28 Parsing (cont'd)

Lab 4 working time

12
T 4/02
Parsing (cont'd)

Homework 3 due today

Lab 4 working time

  Th 4/04 Scope & Symbol Table (pdf)

Lab 4 Scanning and Parsing evaluation in class

Lab 4 working time, how to incorporate symbol table

13 T 4/09 Scope & Symbol Table (cont'd)

Lab 4 working time, how to incorporate symbol table

  Th 4/11 Semantic Analysis (pdf) (slides 1-13, others for reference)

Lab 4 working time, more symbol table and semantic analysis

14 T 4/16 Software Engineering (pdf) (slides 29-62) (selected coverage)

Return Lab 4, Part 1
Return Homework 3

Review Homework 3

Lab 4, how to use tools for adding code generation to your compiler

Software Engineering videos:

SCRUM in under 10 minutes (8:00) [produced by Axosoft]
Introduction to Agile and SCRUM: Part 1 (8:00), Part 2 (9:50), Part 3 (2:50)
SCRUM Basics (5:50)
The Downfall of Agile Hitler (4:00)

Handout: Agile Software Development (see 3/12/19)

Ungraded assignment: Watch any of the above videos that we did not watch during our class meeting. Try to incorporate topics of Agile, SCRUM and from the Agile Software Development handout from earlier this semester into your Lab 4 work.

  Th 4/18 Easter Break - no class meeting
15 T 4/23 Code Generation & Optimization (pdf)

Lab 4 Symbol Table & Semantic Analysis Evaluation

Lab 4 working time, how to add code generation

  Th 4/25 Code Generation & Optimization (cont'd)
Software Engineering (pdf) (slides 63-81) [time permitting]

Lab 4 working time, adding code generation

17 T 4/30 "Friday" - our class does not meet
  Th 5/02 Lab 4 Code Generation Evaluation

Alternative: Lab 4 Code Generation e-Evaluation via email possible (deadline 5/06/19 at 11:00 am) -
  send cminus.flex, cminus.y, GenCode.java and any other files you specifically customized (hopefully none)

e-CATS (first 10 minutes)
Straitjacket Escape Attempt

  F 5/03 READING DAY
16
S 5/04
FINAL EXAM (Villanova schedule)
001 Sat. May 4, 2019, 1:30-4:00
002 Mon. May 6, 2019, 8:30-11:00

Last updated: 05/03/2019