Exam

Examination Date and Time

Find your examination date and time on the list published here on BS. Because of many wishes for changed dates, the official faculty pages are not to be trusted.

Time: Preparation starts: 8.30. Exam starts: 9.00

Meet EARLY! From experience quite a few students do not show up, and once there are no more students waiting for the exam, the exam ends for the day.

Place: Turing-014. Wed 17/1: Nygaard-327. Find links for your examination Zoom meeting in the 'Zoom' brightspace top menu.

Examiner: Henrik Bærbak Christensen

Censors: Niels Olof Bouvin, Clemens Klokmose, and Magnus Madsen.

Examination Form combining Physical Presence and Zoom

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

We will combine a physical, oral, exam with Zoom, as we will use Zoom's share screen feature (and only that) as a faster way for you to share what you have made in the preparation time, than if you should write code and diagrams on the whiteboard. You join the Zoom meeting for the relevant date, just as you would have joined a normal lecture. You will be put in the waiting room of Zoom. You of course also show up near the examination room, so I can call you into the exam.

If we are ahead of schedule (because some students do not show up) I will write on the Zoom chat room that people should meet earlier than expected.

Picking an exercise: When it is your turn to select a question, you should have your Study ID card ready for identification. You then pick a random examination exercise, which will be a 1 page A4 physical paper, similar to the demo exam questions you have seen.

Preparation: During the preparation (about 30-35 minutes), you produce a draft solution on you own laptop to be presented via Zoom's 'share screen' during the exam (and on paper if you want, of course). There will be power, pen and paper in the preparation room. In the preparation time all types of material is permitted including using the internet except access to any question specific help from people or artificial expertise (you cannot ask/call for help from people or AI tools, etc.)

You are of course not allowed to share the exam exercise or any reproductions of it with anyone during or after the exam! Sharing the exercise will not help you, but give other students a significant and unfair advantage, and it is an act of exam cheating, both for the student who shares the exercise as well as the one who gets an advantage.

Examination: I will fetch you from the preparation room, and admit you to the exam Zoom meeting from the waiting room. 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 will do this by 'share screen' and show code fragments, tables, UML diagrams, etc., while explaining and unfolding the material you have developed during the preparation. Of course, you can also draw in the whiteboard etc.

Grading: Once the exam finishes, I and the censor define an grade for the oral . I will give you your grade, and provide comments and recommendations.

After the exam, you must delete your exam presentation material, and of course never give it to any other person or made public. The exam exercises are supposed to only be available for the duration of the exam. Any instances of copies on any platform must be reported to Henrik.

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 doubles and unit/integration testing.
    Emphasis on applying test doubles 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.

Example questions

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

Mandatory Score Influence

The mandatory score must be over 258 to be able to attend the oral exam. However, the score does not contribute to the final grade for the oral exam.

Zoom Advice

A typical exam will require you to produce

  1. Java code
  2. Tables (EC and test cases)
  3. UML diagrams

... so I advice that you find appropriate lightweight tools to do that fast and without much pain. While IntelliJ may seem the obvious tool to write Java code in, remember that the exercise only will provide template and/or pseudo code, and IntelliJ's insistence on syntax and compilation may actually make it difficult to express 'code more freely'. So - experiment beforehand! I do not expect to see code actually executing at the exam - we will just read and analyze code.

Advice

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 though, that you will not pass this exam, if you do not present aspects of the solution of the concrete exercise! You cannot pass on a purely theoretical presentation. For "top-grade" 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 be completely 'solved in all details' during your 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 ECs and test cases for half of the posed requirements, you can probably also get it right for the second half, etc.

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. Unfortunately, a few students still fail SWEA exams due to not being able to formulate simple Java statements - this is required.