CSCI 162: practice discussion questions (final exam prep)

Discussion questions are always a possibility on a final exam for a course like this. Below are some sample questions.

When answering discussion questions, it is generally a good idea to justify your claims - present reasonable supporting arguments. Your ability to support your claim is often more important than the claim itself.

Your job in a discussion question is to convince the instructor you know what you're talking about, that you understand the question, that you have a solid basis for your answer, and that you have thought through any implications.

Conversely, it is generally a poor idea to write a one or two line answer in the belief that the instructor will just assume you know everything relevant.


  1. Explain the difference between X = Y and X is Y and X == Y in prolog.

  2. Explain the role of macros in lisp.

  3. Explain the role of higher order functions in lisp, and give an example of using a higher order function.

  4. (i) Briefly outline the major components of a von Neuman architecture.
    (ii) Briefly outline the fetch-decode-execute cycle, and how/when it uses the components from (i).

  5. Explain the concepts of algorithm complexity and "big-O" notation.

  6. What would be the most useful lisp feature to have in C++? Justify your answer.

  7. What would be the most useful C++ feature to have in lisp? Justify your answer.

  8. At the moment, marie doesn't use any instructions whose machine code begins with (hex) F. It could thus be possible to add one more instruction to the language and have it still be backward-compatible with existing marie programs.
    What one instruction would be most useful to add to the language and why?

  9. Explain the concept of "pure" functional programming, and why common lisp programs are rarely pure fp.

  10. Explain why it would be either difficult or inefficient (or both) for a language like C++ to support arbitrarily large integers and arbitrarily large/precise floating point numbers.