Examination Date and Time

Dates: Pending

Time: Preparation starts: 8.40. Exam starts: 9.00

MEET EARLY! From experience quite a few do not show up. If we 'run out of students' the exam closes and you have missed your chance! Trying to calculate your exact time of examination will not always work.

Place: Pending

Examinator: Henrik Bærbak Christensen

Censors: Pending

Examination Form

The exam is an oral exam, with preparation. The preparation time is about 15-18 minutes and the examination itself about 12 minutes. You will be graded on the 7-scale. The exam uses intern censorship.

The procedure is that you pick a random question. The questions are not given in advance, but you have already seen some examples on the weekplans that resemble what you can expect. All questions will belong to one of the examination areas outlined in the next section.

Preparation: You then have about 15-18 minutes to prepare an 'opening' of the question - that is describe the problem shortly and describe your initial analysis, design proposals, and code fragments. I do not expect a polished or complete presentation! I will quickly start discussing and 'collaborating' with you. In the preparation all types of material is permitted except access to resources outside the room (and this includes internet, phone calls, etc.) In the preparation room you will be provided with paper and pencil as well as overhead slides. You can take slides and paper produced during the preparation with you to the exam.

Examination: In the examination (about 12 minutes) I expect you to 'open' the question, that is, you will describe the question shortly, present solution proposals, analyse them, relate to other topics covered in the course, and of course base your presentation upon definitions, techniques, and tools used in the course. You may bring a short outline as well as complicated diagrams or code fragments on slides or paper that you have prepared in the preparation time. Simple diagrams and/or code fragments I expect you to make on-demand on the blackboard.

Grading: I and the censor will define an overall grade for both oral presentation and mandatory project and give you comments and recommendations. Both aspects (oral and mandatory) must be passable individually to pass the exam.

Examination Areas

The questions are grouped witin the following areas:

  1. Test-driven development.
    Emphasis on applying the rhythm and using/understanding the values and TDD principles.
  2. Systematic black-box testing.
    Emphasis on applying and understanding equivalence partitioning techniques and boundary value analysis.
  3. Variability management.
    Emphasis on applying the four different techniques for handling variability and analysing their benefits and liabilities.
  4. Test stubs and unit/integration testing.
    Emphasis on applying test stubs and understanding the testing levels of unit/integration/system testing.
  5. Design patterns.
    Emphasis on finding the proper design pattern for a problem at hand and applying it.
  6. Compositional design.
    Emphasis on applying compositional design principles and relating it to concepts behavior, responsibilities, roles, and multi-dimensional variance.
  7. Frameworks.
    Emphasis on designing frameworks and understanding framework theory.
  8. Clean Code and Refactoring.
    Emphasis on properties of clean code and using refactoring to improve analyzability.
  9. Distribution and Broker.
    Emphasis on designing distributed client-server architectures using the Broker pattern.
  10. Distribution and REST.
    Emphasis on designing distributed client-server architectures using the REST architectural pattern.

Example questions

Examples of (some) questions are given in demo-question-final-2017.pdf.


Remember this is an exam where you are required to be able to apply techniques. Metaphorically, I am not much interested in hearing about how to do push-ups ("First I bend my arm and then I extend it again"), I am interesting in seeing you do push-ups. So, be sure to train - code the Strategy pattern, dig into the Broker code and be sure to understand it by coding small changes, make print statements in each role to see the sequence of calls, etc.

All questions have a concrete part and a request to broaden the discussion to a more theoretical level. You may choose to start your presentation at "both ends". For instance, if a particular problem require the use of the State pattern you may either describe the concrete solution first and then relate to the more general description of State pattern; or you may describe State in general terms first and then show how it has been applied to solve the concrete problem. Remember, however, that 12 minutes is a short time: for "top" presentations I expect both aspects are treated.

As you know the examination areas in advance and know there should be a more theoretical discussion this is a part you can prepare to some detail in advance. I advice that you use this opportunity.

Most questions are big and cannot in any way be 'solved' in your 15-18 minutes preparation; and that is of course also not required! Spend the time to understand the problem (I see students having solved the wrong problem, which is wasting time!), and then take small steps to sketch a solution proposal for a central part of it---like if you can design and sketch a solution for one variability point, you can probably apply it also for the other variability point; if you can correctly sketch the compositional design for one variability point in the exercise, you can probably also get the second one correct.

Please note that emphasis is put on the operational level when considering passing/not passing the exam! By this I mean that you must demonstrate the ability to write Java (or another OO language) code that implements the basic techniques presented in the course.