22C111 Spring 2008 Examinations Page
In class, Tuesday 13 May at 2:30pm
This exam will concentrate on the material covered in class, and in the readings mentioned on the lectures page from 25 April and after. Pay attention to the figures referenced on the lectures page, and look at the external links on the lectures page also. Although the external links can lead to much extraneous information (too much to study there), you can read the first screen or two to get the general idea of the topic and how it is related to other concepts in programming languages.
Also, the special pages on concurrency and semantics are part of the study material for the final exam, and these pages also have some external links and textbook references. By looking through these notes and the lectures page, you'll find that selected sections of the textbook back up what was presented in the lectures.
The material from earlier in the course is implicitly part of this exam: during discussion of variable scope, I mentioned functional programming; when describing coroutines, I used the example of Deterministic Finite Automata; when speaking of semantics, it's natural to contrast semantics with syntax, commonly specified with regular expressions and context-free grammars. Thus, you can't completely forget about concepts from earlier in the course. That's what I expect you to know from before 25 April's lectures: concepts. I do not expect you to know how to program Perl, Python, Haskell, Java, or Prolog for this exam. However, you should be able to remember the basic ideas from these languages, whether they are static or dynamic, what is the basic way they frame programming and computation: this allows me to ask questions about the topics by referring to specific instances and examples. I may also show some code to ask a question, which implicitly refers to some of the main features of a language we covered. In short, if you followed the course in a reasonable manner, then concentrating on the lecture notes and reading material, as described above, will prepare you well for the final.
The third exam was in class, on Wednesday 23 April.
The third exam covers a few topics on functional programming languages that weren't included in the second exam: combinators, continuations and continuation-passing-style programming, association lists (but may still include earlier conceptual material about functional languages). Also, the exam covers Chapter 13 topics (see lecture notes) and aspects of Perl and Python relevant to general scripting language topics. You will not be expected to know Perl or Python syntax: there won't be any question asking you to find a syntax error in a Perl or Python program, however you should know a few basic things covered in the lectures and textbook on these two particular languages (since these were the only two covered in any depth).
The second exam was in class, on Wednesday 26 March.
The second exam covers the Haskell language, as covered in the haskell course notes and related pages, plus Chapter 10 concepts. Topics from Chapter 10 include Church's Thesis, higher-order functions, first-class function values, homogeneity of program and data (as in Lisp), lambda expressions, the "eval" function, applicative vs normal order, lazy evaluation, strictness, side-effect programming, currying, and the trivial update problem.
However, many topics mentioned in Chapter 10 will not be on the exam: association lists (A-lists), continuations, combinators, garbage collection, denotational semantics, monads, and memoization.
First examination was in class, normal time and place, on Wednesday 20 February.
Some students may wish to see an example of a previous examination; attached to this page is samplexam.pdf, which is such an example. Basically, the exam covered Chapter 1 (figures only), Chapter 2 up to section 2.3, and Chapter 11 up to 11.2.4 (Prolog). The exam also had some reference to what was learned doing the first homework, and Prolog lectures including the one on lists (18 Feb lecture).
Solutions to exam questions were distributed immediately after the exam (to each student who wanted to have this, upon turning in the exam).