laurab>> cosc4342>>schedule
Week# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Tentative Class Schedule for COSC 4342

Week #1:
Jan. 12, 14, 16
Introduction, brief history of compilers, machine translation of compilers, major components of a compiler Chomsky's grammars and Turing Test and a nice explanation of a Turing machine from planetMath. Alan Turing Scrapbook of information about Turing.
Assignments
Assignment #1 Read Ch. 1 and Ch. 2 Assignment #1
Java Code for Asg #1
Week #2:
Jan. 19, 21, 23
Major data structures used in a compiler, translation examples bootstrapping, porting. simpleJava language explanation
Regular expression examples
A really nice tutorial on regular expressions.
Assignments
Assignment #1
Week #3
Jan. 26, 28, 30
Scanning process, regular expressions, examples of use in defining symbols. Finite State Automata, deterministic and non-deterministic, conversions from NFA to DFA. Scanner implementation. Information about Turing machines computation theory and Turing machines Turing's scrapbook
Assignments
Assignment #2
Week #4
Feb. 2, 4, 6th
Use of javacc to generate a scanner You can download javacc for use on your own machine or use the tool on one of the CS machines.
Assignments
Assignment #3
Week #5
Feb. 9, 11, 13th
Converting NFA's to DFA's and minimizing a DFA, Use of Lex to generate a scanner review for exam #1
Example javacc file for tiny language: tiny.jj , example of file tinyConstants.java a main method TokenTestTiny.java that tests the scanner for tiny.
Regular expression for java multi-line comment
Introduction to lex, a lexical analyzer, to use in creating a scanner.
Another nice lex tutorial/explanation
Yet another lex tutorial/explanation
Assignments
Example grammar for parser creation.
Input file for grammar Begin Assignment #4
Read chp. 3-4
Week #6
Feb. 16, 18, 20th

Exam #1 , Wednesday, Feb. 18th. More on recursive descent parsing Begin LL(1) parsing techniques, and explain comparable to recursive descent parsers.
Assignments
Finish up assignment #4
Read chp. 4
Week #7
Feb. 23, 25, 27th
Top down parsing techniques Extended notations, syntax diagrams LL(1) parsing, First and Follow Sets
Assignments
Assignment #5 Read Chp. 5
Week #8
March 2, 4, 6th
Begin working on Assignment #5 and also work on the recursive descent parser Continued examples of first and follow sets simpleJava grammar
Assignments
Assignment #5
Grammar Examples for homework help
Here are answers to 2 grammar examples
Week #9
March 9, 11, 13th
Review the grammar for simpleJava, work on creating a javacc file for a simple grammar (use tiny as an example)
Assignments

Begin Assignment #6.
March 16-20th
Spring Break --- No Classes
Week #10
March 23, 25, 27
Exam #2 Wednesday, March 25th
Bottom Up parsing techniques and LR(1) parsing. Yacc and building a bottom up parser. Begin Chp. 5 Bottom up parsing techniques
Assignments
Friday - Lucian Symposium and Senior Seminar REGISTRATION Attendance is REQUIRED.

Assignment due for Lucian Symposium
Week #11
March 30, April 1, April 3
Creating an Abstract Syntax Tree, visiting the tree, examining each statement and expression - visitor pattern and singleton pattern.
Assignments
Assignment #6 .
Week #12
April 6, 8, 10
No classes on Friday, April 10th, Easter Holiday
More on bottom up parsing, use with simpleJava language, more on Yacc. Semantic analysis - attributes and attribute grammars algorithms for attribute computation and the symbol table data types and type checking, semantic analyzer for TINY Begin Yacc and LALR(1) Parsing
Assignments
Assignment #6
Week #13
April 13, 15, 17
No day classes on Monday, April 13th, Easter Holiday
More on semantic analysis. Work on explanations of FunctionEnvironment, VariableEnvironment, TypeEnvironment Explanation of visiting nodes and performing semantic analysis
Assignments
Semantic Analysis Example Implementation
main test method for semantic analysis
Read Ch. 7
Week #14
April 20, 22, 24
LR(1) parsing algorithm, examples
Begin Semantic Analysis and how it applies to visiting an AST..
no class on Friday, April 24th work on assignment #6
Assignments
finish up Assignment #6 due Monday.
Week #15
April 27, 29, May 1
Abstract Assembly Language - generating code from an abstract assembly tree review for final exam
Assignments
Finish Assignment #7
Week #16
May 4-7th
Final Exam Week as scheduled by the registrar
Study for the final exam
top of page