COP5621 Exam and Grading Information
Grade Breakdown
*Lab assignments include homework exercises and programming assignments.
Exam Calendar
| Exam |
Date |
Time |
'05 exams |
| Exam 1 |
1/31 |
2:00PM - 3:15PM |
N/A |
| Exam 2 |
2/21 |
2:00PM - 3:15PM |
N/A |
| Exam 3 |
3/28 |
2:00PM - 3:15PM |
N/A |
| Final |
4/29 |
12:30PM - 2:30PM |
N/A |
Letter Grades
| Score |
Grade |
| >=95 |
A |
| >=90 <95 |
A- |
| >=85 <90 |
B+ |
| >=80 <85 |
B |
| >=75 <80 |
B- |
| >=70 <75 |
C+ |
| >=65 <70 |
C |
| >=60 <65 |
C- |
| >=55 <60 |
D+ |
| >=50 <55 |
D |
| >=45 <50 |
D- |
| <45 |
F |
Exam 1 Study Material
- Textbook chapters 1, 2, and 3.
- Lecture notes.
- JVM Specification 2nd ed. Sections 3.1 to 3.6, and 3.11.
The knowledge and techniques you should master include (but are not limited to) the following:
- The structure of a compiler: compiler phases and passes
- The analysis-synthesis model
- Definition of a context-free grammar: terminals, nonterminals, productions, start symbols
- Derivations and sentential forms
- Parse trees
- Ambiguity problem, operator associativity, and operator precedence
- Syntax-directed translation: attributes and semantic rules
- Translation schemes
- Recursive descent (predictive) parsing
- Using FIRST to write a recursive descent parser
- Left factoring and left-recursion elimination
- Handling identifiers and keywords with symbol tables
- Abstract stack machines
- The basics of the JVM
- Interaction between the lexical analyzer and parser
- Definition of tokens, token attributes, patterns, lexemes, alphabets, strings, and languages
- Operations on languages
- Regular expressions and notational shorthands
- Regular definitions
- Transition diagrams: how to construct and program
- The Lex/Flex specification
- Definition of NFA, DFA, transition graph, transition table
- Thompson's construction algorithm
- NFA simulation with e-closure and move
- Subset construction algorithm
- Minimizing the number of states of a DFA using the partition algorithm
- Converting a regular expression into a DFA directly
- NFA/DFA time-space tradeoffs
Exam 2 Study Material
- Textbook chapter 4, excluding section 4.6 and section 4.7 parts "efficient construction of LALR parsing tables" and "compaction of LR parsing tables".
- Lecture notes.
The knowledge and techniques you should master include (but are not limited to) the following:
- Position of the parser in the front-end of the compiler model
- Importance of error handling, the viable prefix property, and error recovery strategies
- Grammars, deriviations, parse trees, and the Chomsky Hierarchy
- General and immediate left-recursion elimination
- Left factoring
- FIRST and FOLLOW
- Constructing an LL(1) parse table
- LL parsing and error recovery
- Shift-reduce parsing
- Constructing the set of LR(0) items using closure and goto
- Constructing an SLR parse table
- Constructing the set of LR(1) items using closure and goto (for canonical LR(1) and LALR(1) parse tables)
- Constructing canonical LR(1) and LALR(1) parse tables
- LR parsing and error recovery
- Subset relationship between LL(1), SLR(1), LR(1), and LALR(1) grammars
- Proving that a grammar is LL(1), SLR(1), LR(1), or LALR(1)
- Resolving shift/reduce conflicts with operator precedence and associativity
- The Yacc specification of a grammar
- Combining Yacc/Bison with Lex/Flex
Exam 3 Study Material
Exam 4 (Final) Study Material