The oral exam questions take the starting point in an exercise, which has been discussed during the course.
At the beginning of the exam you will be asked a number of questions relative to an exercise, as reflected by one of the exam questions listed below. At the end of the exam you should be prepared to answer more general questions covered by the course syllabus, and as hinted by the keywords which are associated with each of the exam questions. You are not supposed to present your own solution in great details during the exam, but you should be prepared to explain selected aspect of both the problem and the solutions.
List processing - recursion and iteration
Exercise 3.5
Keywords: The list concept. Recursive functions. Iteration by means of tail recursive functions. Representation of tables.
Higher-order functions
Exercise 4.4
Keywords: The list and vector concepts. Generalization with higher-order functions. Classical higher-order functions on lists (ala map, filter, and reduce).
Object-oriented programming in Scheme
Exercise 8.1
Keywords: Functions and lambda expressions. Closures. Simulation of classes, objects, inheritance, messages, and methods in Scheme.
First Order Predicate Logic
Exercise 6.1, 6.2, 6.3, 6.6, and 6.7
Keywords: terms and formulae, substitution, unification, resolution
Recursive Programming in Prolog
Exercise 7.1, 7.2, and 7.4
Keywords: recursive rules, lists, accumulator attributes
Procedural Prolog
Exercise 9.1 and 9.2
Keywords: prolog interpreter, search trees, cut, negation as failure
Inheritance and prototypes in SELF
Exercise 11.2, 12.1, and 12.2
Keywords: slots, parents, message lookup, multiple inheritance
Dynamic crosscutting in AspectJ
Exercise 13.2, 14.1, 14.3, and 14.5
Keywords: join point model, advice, aspects, name-based crosscutting
Property-based crosscutting and instantiation of aspects
Exercise 14.2, 14.3, 14.4, and 15.1
Keywords: join point control flow, wildcards in pointcuts, aspect instantiations
Ole Guttorm Jensen
Kurt Nørmark