CSC 4181 Compiler Construction Spring 2017

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/17

Welcome, Course Overview

Accumulator machine example (pdf)

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

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: 2/02/17

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

  Th 1/26 Overview of Compilers, Review

Lab working time

Modified version of checker from class 1/26/17 (checker_v3.html)

3 T 1/31 Lexical Analysis (pdf)

Lab working time

Modified version of checker from class 1/31/17 (checker_v4.html), shows how to use regular expression matching in "if" statement.

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

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

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

Homework 1 - Parse Trees and Syntax Trees - due Tue. Feb. 14, 2017

Context Free Grammars (pdf)

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

CLASS CANCELED due to SNOW

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

Lab 2 - Scanner Generation (assignment)
Lab 2 working time later in class meeting

Homework 2 - Parse Trees and Syntax Trees - due Tue. Feb. 21, 2017

Homework 1 due today

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

Lab 2 working time

6 T 2/21 Parsing (pdf)

Lab 2 working time

Homework 2 due today

  Th 2/23 Parsing (pdf)

Lab 2 due today, demo & eval during class meeting

7 T 2/28

Software Engineering (pdf) (slides 1-20)
Video: Fact

  Th 3/02 Software Engineering (cont'd) (slides 21-28)
Agile Manifesto (handout)

Lab 3 - Parser Generation (assignment) - due Thur. March 23, 2017
Lab 3 working time


T 3/06
Th 3/08

Semester Break - no class meetings
8
T 3/14
Parsing (cont'd) CANCELED DUE TO SNOW

Lab 3 working time

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

Lab 3 working time

9 T 3/21 Parsing (cont'd)

Lab 3 working time

  Th 3/23

Parsing (cont'd)
Review solutions to Homeworks 1 and 2

Homework 3 - Grammars and Parse Tables - due Tue. March 30, 2017

Lab 3 due not due today... postponed to 3/28

10 T 3/28 Software Engineering (pdf) (slides 29-41)

NEW! Lab 3 due today, demonstrate during class meeting

  Th 3/30 Semantic Analysis (pdf) (slides 1-22)

Homework 3 due today (March 30, 2017)

Lab 4 - Building a Complete Compiler (assignment)

Lab 4 working time

11 T 4/04 Semantic Analysis (cont'd) (slides 23-47)

Lab 4 working time

  Th 4/06 Software Engineering (pdf) (slides 42-62)

Lab 4 working time

12 T 4/11 Software Engineering (selected topics)

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

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.

Lab 4 Scanner and Parser Evaluation

  Th 4/13 Easter Break - no class meeting
13 T 4/18 Scope & Symbol Table (pdf)

Lab 4 working time, how to incorporate symbol table
Lab 4 Scanner and Parser Evaluation (cont'd)

  Th 4/20 Lab 4 working time
14 T 4/25 Code Generation & Optimization (pdf)
Software Engineering (pdf) (slides 63-81)

Lab 4 working time
Lab 4 Symbol Table Evaluation

REVISED Code Generation Part - Note that the provided class file GenCode.java (to be sent via email 4/25) is ready to use, so your task is to insert calls into your yacc specification to generate code in the appropriate places using the support in GenCode.java in order to add code generation capabilities to your compiler.

  Th 4/27 Lab 4 working time

Lab 4 Symbol Table Evaluation (cont'd)
Lab 4 Code Generation Evaluation

15 T 5/02 "Friday" - our class does not meet
  Th 5/04 Lab 4 Code Generation Evaluation (cont'd)

Alternative: Lab 4 Code Generation e-Evaluation via email possible (deadline 5/08/17) -
  send cminus.flex, cminus.y and any other files you specifically customized

eCATS (Student Proctor Guide)
Straitjacket Escape Attempt

  F 5/05 READING DAY
16
S 5/06
M 5/08
FINAL EXAM (Villanova schedule)
Sat. May 6, 2017, 1:30pm - 4:00pm
Mon. May 8, 2017, 8:30 am - 11:00 am

Last updated: 04/21/2017