ITEC 380 - Final Exam Material - Updated for Fall 2010
ITEC 380 - Final Exam Material
Updated for Fall 2010
Updates: Last modified on
- 11/24/10: Initial, partial update for fall 2010
- 12/09/10: Further update for fall 2010
- 12/13/10: Minor corrections (ie Change chapter 10 to 9 and strike out subroutine
implementation)
- 12/13/10: Add coverage percentages
- Material
- All material from Exam 1 and Exam 2
- But no programs in prolog or python.
- General or reading questions about prolog or python are possible.
- New material
- Chapter 4 - Recursive Descent Parsing
- LISP
- Chapter 6 - Types
- Chapter 9 - Parameter Passing
-
Chapter 10 - Subroutine Implementation
- Chapter 3 - Semantics
- Percentages:
- From first exam material (Chapters 1-3): about 25%
- From second exam material (Chapters 4-5): about 20%
- Since second exam (Chapters 4, 6, 9, Lisp): about 55%
- Chapter 4: Compilation
- Recursive Descent Parsers:
- Create a RD compiler for a given grammar expressed in BNF or EBNF
- Use a RD parser to determine if a statement is in a language
- Use a RD parser to generate a tree or stack machine code
- Trace the steps of parsing a statement
- Stack machine code
- Interpret a sequence of stack machine code statements
- Convert an expression or statement into stack machine code
- Top down parsing:
Define the sets FIRST and FOLLOW
Calculate the sets FIRST and FOLLOW
State and apply the two rules for when a top down parser can be
constructed
- Top down (RD and LL) and bottom up (LR) parsing:
- Differentiate between top down and bottom up parsing
- Define LL and LR parsing and relate them to top down and bottom up parsing
- Describe relative capabilities
- Lexer and Parser generators:
- Describe basic inputs and outputs
- Recognize common: lex, yacc, bison, antlr
- Chapter 6 - Types
- Definition of data type
- Primitive Types
- Four Definitions, and examples
- Basic implementation of and issues with 4 numeric types
- Boolean: issues and implementations
- Character: Encodings
- Strings: Describe and evaluate 3 kinds
- Ordinal:
- Enumerated: Define. Describe motivation, implementation, issues
- Subrange: Define. Describe type checking and motivation
- Arrays
- Define
- Describe Subscript issues
- Give access formulas
- Define and contrast 2D arrays and arrays of arrays
- Describe and recognize row and column major
- Describe access optimization techniques
- Describe and give examples of five array categories
- Records
- Define. Describe implementation
- Discuss motivation and alternate solution
- Describe elation to classes
Non Primitive - arrow: definitions and issues
-
Union: Definition and issues
- Pointers: Issues and reference types
- Heap management
- Describe process of allocation and deallocation and use of free list
- Dangling References: define; describe solutions (ie tombstone, lock and key)
- Garbage:
- Define
- Reference counts: describe what they are and how they work and their relation to garbage
- GC algorithms (mark and sweep, copy collection): describe, give pros/cons
- Discuss role of GC in modern languages
-
Evolution of types
- Chapter 9 - Parameter Passing
10 - Implementing Subprograms
- Describe parameter passing issues
- Describe parameter passing modes
- Describe relevance of when parameters are evaluated
- Describe parameter passing mechnisms (eg Value, Result, V-R, Reference, Name)
- Differentiate between parameter passing modes and mechanisms
- Recognize difference between Value Result and Reference
- Stack protocol and Activation Record (AR)
- LISP
- Function evaluation
- Lists and atoms
- Nil
- Nil and T
- Composition and evaluating arguments
- quote
- car, cdr, cons
- If, cond
- Defun
- Write simple LISP functions
Referential transparency
- Semantics
- Define 3 kinds of semantics: operational, axiomatic, denotational
- Describe uses of operational semantics
- Give an operational semantics definition of a simple statement