CSC 439/639 – Fall 2020 – Schedule

The following gives a day-by-day breakdown of topics covered, readings assigned, and assignment handouts/due dates. Each topic includes required readings that students should read before the topic is discussed in class – always look ahead a few days to see what readings you should be doing. Some topics also have supplemental (non-required) readings that students can look into if they want to delve more deeply into that topic.

The schedule in this class is flexible, and past dates will be updated to reflect what was actually covered. Future dates are always tentative and subject to change, but should be fairly accurate for a week or two into the future.

Week 1 (half week): August 19 – August 21

Reading: Chapter 1
Wednesday Topic: Class overview and syllabus review [Slides]

Week 2: August 24 – August 28

Reading: Finish Chapter 1 plus Sections 2.1–2.4
Monday Topic: Introduction to compilers and programming language features [Slides]
Wednesday Topic: Compiler tour – syntax, parsing, and translation [Slides]
Due Friday: Gradiance Homework 1

Week 3: August 31 – September 4

Reading: Sections 2.5–2.8 and 3.1–3.3
Outside Reading: A Two-Page Introduction to ANTLR by Stephen A. Edwards (note that this is very good from a high level, but details are a little outdated – you should use “fragment” instead of “protected” with current versions of ANTLR)
See Also: “The Compiler Project” pages in Canvas
Monday Topic: Compiler tour – expressions, lexical analysis, IC generation [Slides]
Wednesday Topic: Lexical Analysis – basics and regular expressions; ANTLR and project overview [Slides]
Due Friday: Gradiance Homework 2

Week 4 (half week – no class Monday): September 9 – September 11

Reading: Section 3.4
Wednesday Topic: Lexical Analysis – recognition of tokens [Slides]
Due Friday: Gradiance Homework 3

Week 5: September 14 – September 18

Reading: Sections 3.5–3.9
Monday Topic: Lexical Analysis – Scanner generators, finite automata, and regular expressions [Slides]
Wednesday Topic: Lexical Analysis – Practical application and optimization [slides continued from Monday]
Due Friday: Gradiance Homework 4

Week 6: September 21 – September 25

Due Monday: Compiler Part 1 – Lexical Analyzer
Reading: Sections 4.1–4.5
Monday Topic: Introduction and Context-Free Grammars [Slides]
Wednesday Topic: Top-Down and Bottom-Up Parsing [Slides]
Due Friday: Gradiance Homework 5

Week 7: September 28 – October 2

Reading: Sections 4.6–4.9
Monday Topic: LR Parsers - LR(0) sets and SLR(1) parsing [Slides]
Wednesday Topic: LR Parsers - LR(1) and LALR [Slides]
Due Friday: Gradiance Homework 6

Week 8: October 5 – October 9

Reading: No new reading this week
Monday Topic: Parsing wrap-up and midterm review
Wednesday: Midterm Exam 1
Note: No Gradiance homework this week

Week 9: October 12 – October 16

Due Monday: Compiler Part 2 – Basic Parser (only ints)
Reading: Chapter 5
Monday Topic: Syntax-Directed Translation – Part 1 [Slides]
Wednesday Topic: Syntax-Directed Translation – Part 2 (slides continued from before)
Due Friday: Gradiance Homework 7

Week 10: October 19 – October 23

Reading: Sections 6.1–6.6
Monday Topic: Intermediate-Code Generation – Part 1 [Slides]
Wednesday Topic: Intermediate-Code Generation – Part 2 [Slides]
Due Friday: Gradiance Homework 8

Week 11: October 26 – October 30

Due Monday: Compiler Part 3 – Complete Parser (with chars and arrays)
Reading: Sections 6.7–6.9 and Sections 7.1–7.3
Monday Topic: Intermediate-Code Generation – Part 3 [Slides]
Wednesday Topic: Run-Time Environments – Part 1 [Slides]
Due Friday: Gradiance Homework 9

Week 12: November 2 – November 6

Reading: Sections 7.4–7.5 and Sections 8.1–8.4
Monday Topic: Run-Time Environments – Part 2 [Slides]
Wednesday Topic: Code Generation – Part 1 [Slides]
Due Friday: Gradiance Homework 10

Week 13: November 9 – November 13

Due Monday: Compiler Part 4 – Intermediate Code Generation
Reading: Sections 8.5–8.11
Monday Topic: Code Generation – Part 2 [Slides]
Wednesday Topic: Code Generation – Part 3 [Slides]
Due Friday: Gradiance Homework 11

Week 14: November 16 – November 20

Reading: Sections 9.1-9.2 (for Wednesday)
Monday Topic: MIPS architecture and discussion of project stage 5 (code generation)
Wednesday Topic: Introduction to Global Optimization and Analysis [Slides]

Week 15: November 23 – November 24

Special week – Class on Monday and Tuesday
Monday Topic: Catch-up, summary, and review
Tuesday: Midterm Exam 2

Final Exam

This class will have a final project in lieu of a final exam. The project is due at the university-scheduled final exam time, which is:

Monday, November 30, 2020, 3:30 PM
Due – All students: Compiler - part 5 - code generation (complete compiler)
Due – Graduate/Honors students: Final project due