Below is a list of the topics we have talked about in the course. You can expect questions on most of these topics. Mostly conceptual questions, but there will be some questions that ask you to write some code too (including in Scheme). In other words, the finals will be like the mid-terms. A single cheat-sheet is allowed.
I don't know if I will be able to post a sample final. If you have questions, please email or post or stop by during my office hours (Thursday at 1-2, and Monday at 11-12).
-
Basic concepts of syntax, semantics, etc. Language implementations using compiliers and interpreters. The advantages / disadvantages of each approach.
-
BNF (and extended BNF) grammars; context-free and context-sensitive conditions. Ambiguous grammars and relation to semantics questions. Abstract and concrete parse trees. Run time questions.
-
Recursive descent approach to: parsing, compiling, and executing programs.
-
Data abstraction via the example of the parsing, interpreting, etc.
-
Various programming paradigms. Functional programming using Scheme. Some details of Scheme including in particular the data structures it uses, how functions are represented, etc. Brief discussion of how the Lisp interpreter (using a-lists) works.
-
Types including strong typing etc. How the notion of base classes and derived classes and polymorphism may be used for such examples as evaluation of expressions or execution of statements etc. Brief discussion of details of how inheritance and polymorphism work and how they are implemented; i.e., some discussion of memory management on the heap, in particular what objects look like at runtime etc.
-
Static and dynamic scope rules and some details of how they are implemented. Parameter passing mechanisms.
In terms of the text, here are some key chapters: 1, 2, 3, 7, 8, 9, 10.
But we didn't cover everything in these chapters, nor is everything we
covered in these chapters; your class notes and copies of the slides
should be very useful in preparing for the finals.
Hope that helps. Send me questions, if any, by e-mail.
The final exam is on Monday, Dec. 10, at 2:00. I will be available in my office on Thursday at 1-2 and on Monday at 11-12, and will answer email/newsgroup questions as promptly as possible.
Good luck.
--Neelam.