The next upcoming occasions
The next two exams take place
- 2016-10-25 during 14-19 in MA:9.
- 2016-12-22 during 14-19 in Sparta:C.
Except for anonymous examination, you do not have to sign up; just show up (even when "registration required" is stated in the central database).
All exams are given in English ONLY (answers in Swedish is of course also fine).
Hints for solving the construction problems
The first part of each exam in on the theory, whereas the second part is the construction part consisting of two construction problems. The first of these has to be sufficiently well solved for the second to count for your points/grade. (The reason is that the first construction problem is more concrete and aims to test actual coding skills and knowledge about synchronization etc., and that is required to pass, while the second is more conceptual and design oriented, which should count only for higher grades; to make high-level decisions you should know what it implies on lower levels [in any system or organization].) More than 80% of those failing the exam do so because of the first construction problem. Therefore, the following hints are intended to help you avoid some typical mistakes:
- Browse through the description and get a general impression what the problem is about.
- Read carefully the description, in particular paragraphs containing specifications, and mark (yes, underline, mark, and make notes in the exam document, which is for you to use and keep) the specifics that your implementation should fulfill.
- What accomplishments does your customer care about? In this course it is neither code that is so correct that it would compile direct (errors that the compiler would report is mainly ignored), nor is it formally correct numerical computations that might be part of some methods. It is the design and implementation of multi-threaded systems, including proper object-oriented concurrency (active and passive objects and the signaling and synchronization between them) and proper locking of shared resources (mutual exclusion) that counts when your solution is reviewed.
- Write short answers to the theory questions, and make sure you have sufficient time (3.5 hours?) for the construction part (and perhaps start with that).
- For things you do not think is clear from the problem or that does not make sense, make reasonable assumptions that you also provide with your solution, as typically within engineering. Of course, if you oversimplify the problem there will be a reduction of your points, but it is still better than an implementation that does not correspond to the problem.
- Implement the main and most important parts first. Some simple initialization code and the like can be skipped. Instead, pay careful attention to how you accomplish synchronization and other core parts of the course.
- Explain your design with figures and text whenever applicable. Write readable text/code.
- Maintain a positive attitude during your struggles.....
Concurrency and real-time problems are typically part of rather complex scenarios, and in industry you ability to grasp the problems can be as important as your ability to solve them, and there is always a lack of time. Still, a course needs to have a limited scope and the exam should be possible to understand, so ask if needed.