1. What is SIMD and MIMD? Specify what each is short for and briefly describe.

2. Describe why intermediate code is used in the compilation process.

3. Draw the parse tree for the following derivation:

=> A =

=> A =

=> A = B *

=> A = B *

=> A = B * C +

=> A = B * C +

=> A = B * C + D +

=> A = B * C + D +

=> A = B * C + D + A *

=> A = B * C + D + A * (

=> A = B * C + D + A * (

=> A = B * C + D + A * (B +

=> A = B * C + D + A * (B +

=> A = B * C + D + A * (B + C)

4. Specify, and describe in fair detail, at least 4 language design criteria.

5. What is functional programming? Describe in detail.

6. What is referential transparency?

7. Draw the expression tree for the following prefix expression:

(* (* (*(* 3 4)(+2 5))(+ 5 3))(+1 2)) and specify the result of the expression.

8. What is lexical analysis? Describe in detail.

9. What sequences will the following finite state machine accept (will start at s0 and end at either s1 or s2)? Characterize them in detail.