Topics for Final Exam
The final exam is optional. I will count the higher of the grades from the midterm and final exams. Even if you got an excellent score on the midterm exam, I would recommend that you take the final as practice for the core exam.
The final exam will cover most of the same topics as the midterm. Here are a list of additional topics that I will expect you to be familiar with for the final:
- Type inferencing vs. type checking
- Referential transparency
- First-class functions (why activation records won't work)
- Pattern matching and data constructors
- Lazy vs. Eager evaluation
- Classes
- Inheritance
- Static vs. Dynamic binding
Here are the list of topics from the midterm:
- BNF/EBNF
- given a grammar in (E)BNF, describe the language it defines
- given a grammar in (E)BNF decide whether certain words are in the set defined by the grammar
- convert an EBNF grammar to BNF
- given a description for a simple language construct, write an EBNF description for it
- Structure of a Programming Language
- Syntax
- Static Semantics
- Dynamic Semantics
- Dynamic vs. Static Properties of a Programming Language Definition
- Interpreted vs. Compiled Programming Languages
- Type coercion
- Operator precedence
- Associativity (right vs. left)
- Data structures
- Reading Simple Perl programs
- Scoping
- binding/bound/free occurences
- scope of a declaration
- visibility of a declaration
- lifetime of a declaration
- dangling references
- Parameter passing methods
- call-by-value
- call-by-reference
- call-by-value-result
- macro expansion
- Lexical vs. Dynamic Scoping
- Memory management: heap/stack
- Activation Records
- In a given program, what activation records will be on the stack
- The basic elements of an activation record