Conceptual Summary - In Reverse Order
Here are some concepts to focus on in reviewing.
Exception Handling:
Dynamic vs static binding of exception handling. How is dynamic more flexible? How is static better?
Scoping and propagation.
How does Java improve over C++'s exception handling? How does the finally clause improve? How about the OO nature of Java? The handling of built in exceptions not explicitly raised by the user?
How can a lang without specific features for exception handling handle errors? what are drawbacks of this approach?
Concurrency:
What is cooperative, competitive synchronization?
Why do we need them?
How does a binary semaphore help with competitve synchronization?
How does a regular semaphore help with competitve synchronization?
what are the inner workings of wait and release for semaphores?
What is a monitor?
What is message passing? Rendezvous?
How can we use message passing to implement a binary semaphore? A monitor?
What mechanism is used for concurrency in Ada 83? Ada 95? Java?
Interactive Fiction:
Why is an object oriented language well suited for programming interactive fiction? Why is a natural language based programming language?
Implementing Subprograms:
FORTRAN 77 with no recursion vs ALGOL and on.
FORTRAN 77:
How handle activation records, access to nonlocals (but not globals either), transfer of control. Why does this present a problem in terms of recursion?
ALGOL:
with stacked activation records. how does this allow for recursion?
What does an activation record look like.
What is the difference between the dynamic and static link. Why is a static link chain O(n)? What is the idea behind a display, and how can this minimize lookup?
Where scoping is static, how does a pair (depth, offset) work to identify a nonlocal? Why can this not work for dynamic scoping, and what would we need to store instead?
LISP:
How would you write a LISP program to return N + 3?
To get the length of a list?
What is car? cdr? caadar? If I gave you a list, could you tell me caadar of that list?
Guarded Commands:
The od and fi constructs - how they work. How are guarded commands useful in terms of ensuring program accuracy?
How are guarded commands useful in concurrency to acheiving nondeterminism?
Subprograms:
in, out, inout parameters.
what are: pass by value, pass by result, pass by value-result,
pass by reference?
positional parameters vs. keyword parameters. default parameters.
Iterative Statements
Difference between pretest and posttest,
Control Structures:
Nothing
PROLOG:
Facts, goals, and rules.
the Terach example. How would you write a rule for ancestor?
Data types:
arrays: static, fixed-stack dynamic, stack-dynamic, heap-dynamic.
Functional Programming Languages:
What is a higher order function? What is mapcar?
In Haskell, what is an infinite list? Lazy evaluation.
Thursday, May 25, 2006
Review - A Work In Progress
Posted by joshwaxman at 4:43 AM
Subscribe to:
Post Comments (Atom)
1 comment:
visit blog.bookkill.com
Post a Comment