VOP  2007 Exam information

Readings

The readings include all the slides and the pdf files mentioned in the readings for lecture 1 through 14. We do not expect you to read the secondary/further readings for the exam. Lecture 3 will not be a mandatory part of the exam.

Exam format

Notice. Due to the new anti-team exam rules, I have changed the exam form to classical one person at a time.

The exam is an oral exam. There is no preparation time ahead of the exam. Each exam is scheduled to last 20 minutes per student, including 5 minutes per student for determining a grade and giving feedback.

There are two parts to the exam. For the first part, you choose a topic of relevance to the course, and give a presentation of this for 7 minutes (voluntary topic). Be prepared that we might interrupt you with questions, so try to get to the point very fast. Then you draw a number, and will have to tell about a specific topic with that number (mandatory topics). Again, we will interrupt to move the discussion in a new direction, or to challenge you with more details. If you prefer, you can let me and Sebastien pick topics rather than draw.

You are free to choose whatever topic you find interesting within the VOP area for the voluntary topic. You will in part be judged by the relevance of the topic, so choose one which is clearly inside the scope. If you are not certain if your chosen topic is relevant, you can ask Kasper. You are welcome to use any of the topics from the mandatory questions list (below) - they are all within scope :-). You are welcome to explain the concepts with the outset in concrete issues from the UMLEditor case.

Exam dates

The dates for the exam are Tuesday January 22nd through Thursday 24th (both included). We will schedule to start at 9:00 in the morning, and schedule to end by 16:00 in the afternoon. We will have lunch break from 12:30 to 13:00. The exams will take place in room (To be announced).

Around start of January, I will get a list of all who will take the exam. I will then start from one end, filling up from Tuesday.

There is therefore a risk that the day you were assigned is not appropriate for you. I will not accept single change requests. I will however be happy to accommodate swaps. So if you are not happy about your day, find someone to swap with, and I will swap you two. Remember, you can look up the email address of your fellow students at the "Find person" from ITUs home page.

The schedule will be available from the course page and it will be updated regularly.

Practicalities

Mandatory topics list

  1. Observer pattern. What is the problem it tries to solve, how do one typically implement it, and what examples have you seen.
  2. Mediator pattern. What is the problem it tries to solve, how do one typically implement it, and what examples have you seen.
  3. Visitor pattern. What is the problem it tries to solve, how do one typically implement it, and what examples have you seen.
  4. Double dispatch. What is the problem it tries to solve, how do one typically implement it, and what examples have you seen.
  5. Dependency injection. What is the problem it tries to solve, how do one typically implement it, and what examples have you seen.
  6. Proxy pattern. What is the problem it tries to solve, how do one typically implement it, and what examples have you seen?
  7. Model View Controller. What is the problem it tries to solve, how do one typically implement it, and what examples have you seen.
  8. Version handling. What is a version, how can we identify and handle differences among versions, and which problems might occur when merging?
  9. Present some of the key points of E. Agerbo, A. Cornils. How to Preserve the Benefits of Design Patterns.
  10. Extract super class and Form Template Method. Explain and motivate the re-factorings Extract Super Class and Form Template Method.
  11. Bad code smells. Motivate and explain selected examples of bad code smells, and how one goes about removing them.
  12. Mapping inheritance hierarchies to database tables. Briefly explain what the problem is about, and discuss the three standard strategies for mapping inheritance to tables.
  13. Explain the ideas of Design by Contract and non-null constraints. Motivate and explain selected examples of Design by Contract and non-null constraints.
  14. Explain the main Object-Oriented techniques to support software evolution (with an emphasis on modules decomposition),  and the support for versioning in .NET.
  15. Explain the principles of the Adaptive Object Model, if you have time, you can compare it with the object mapping strategy "Map classes to a generic table structure".
  16. Code generation. Explain the problem on merging hand written code and generated code and how to address the problem. Discuss the usage of a CodeDom versus simple source text generation using a visitor.
  17. Explain and motivate a few new constructs from the C# 3.0 language.