CSc 453 (Fall 2007): Final exam: structure and syllabus

1. Structure

The final exam will consist of roughly 5-8 problems. It will be a comprehensive exam, in that all of the material covered during the semester will potentially be examined. About a third of the final exam will consist of pre-midterm material; the remainder will be post-midterm material.

You will be expected to know the material at the level of detail discussed in class (see below). You will be expected to know material that has been discussed in class, as well as material that you can reasonably be expected to be familiar with as part of your project. You will not be examined on material that has not been discussed in class nor been a substantial component of your project. In addition, it is assumed that you are familiar with material from courses that are prerequisites to this class.

The points total for the problems on the exam will add up to roughly 120, which not-so-coincidentally is the duration of the exam (in minutes). This means that for each problem, the points assigned to that problem can be taken as a rough guide to how much time you should be spending on it. This may help you with your test-taking strategy.

2. Syllabus

Topics listed below refer to the lecture notes from the class.

  1. Background [all slides];

  2. Lexical Analysis [all slides except for slides 23-26, which deal with implementing finite automata];

  3. Parsing [all slides except for slides 17-18 on removing operator ambiguity by transforming the grammar];

  4. Semantic Analysis [all slides except for slide 20 (notions of type equivalence) and 26 (operator overloading)]

  5. Runtime Environments [slides 1-15];

  6. Intermediate Code Generation [all slides]

  7. Final Code Generation [slides 1-10]
    Comment: I don't expect you to know the details of the optimizations discussed, since these were covered only superficially in class. I do expect you to know what code optimization is, as well as some of the basic approaches to code optimization (at the level of detail in the lecture notes).

  8. Interpreters and Interpretation [all slides]
    Comment: I don't expect you to know the details of JIT compilers, since this was covered only superficially in class. I do expect you to know what JIT compilation is, as well as some of the issues that have to be addressed for JIT compilation (at the level of detail in the lecture notes).

  9. Linkers [slides 1-20 and 24-28 of "Linking and Loading" lecture notes]
    Comment: I don't expect you to memorize the details of the structure of ELF files and headers. I do expect you to to know what kinds of information is contained in binaries, and how this information is used by linkers to carry out linking (at the level of detail in the lecture notes).