Final Exam Guidelines
The final written exam will be worth 50 points. The remaining 50 points are obtained from the assignments and project.
The final exam will be online. Thus, you will need a laptop and an active Internet connection. The duration of the exam is 3 hours and 30 minutes (including theory and practice), and the dates are:
- 25.05.2020 14:15-18:00
- 02.06.2020 10:15-14:00
- 23.06.2020 10:15-13:45 (Resit, only for those who failed the previous exam)
Please, register through the information system as usual.
The final exam consists of two parts, theory (20 points) and practice (30 points). To pass the course, you must score at least 21 points (out of 50) in the final exam (or resit) and a total score of at least 51 points (exam + assignments + project).
You are not allowed to communicate with anyone during the exam in any way (except with the lecturer via private messages in Slack).
Theory Exam (20 points)
- It will consist of short answer questions regarding the concepts addressed during the semester. You can check the materials under the Lectures tab in this wiki, e.g., check the recorded videos and links to resources on the web. Note that the exam may include questions about the spring core framework, e.g., see Spring Core Tutorials.
- The exam will be performed on Moodle. The questions will be displayed in random order to each student, and you will have only one opportunity to answer them. In other words, be sure of your answer before moving to the next question because you will not be allowed to come back to a previous question.
- Unlike previous years, we will NOT ask you to design models from a given scenario, e.g., domain model and state machine. For example, this year exam will NOT include questions like in Part 2 of the previous year exam (see 2019 Exam 1. However, the exam will contain short answer questions regarding the concepts involved in domain models, e.g., entities, aggregations, relationships and so on.
- We will send you all the links to enrol in Moodle by the next week. Besides, we will run a short sample exam to verify that you all have access to the system by 21.05.2020 (the entire day). Note that the sample exam is not part of the assessment of the course, but instead a tool to test the system so we can fix any technical issue before the actual exam. Thus, we strongly suggest you check it up.
- You will receive the practice exam after completing the last question of the theory part.
Practice Exam (30 points)
- The exam will consist of one scenario to extend the RentIT information system that we have been implementing in the course. You can use the code of RentIT in the Bitbucket repository Code Repo (RentIT), or you can use the code from your project as a starting point of the exam.
- The exam will include a set of requirements that must be implemented and tested in RentIT (i.e., a Spring Boot application). Your application does not need to have a frontend. It only needs to expose the required REST operations. The tests should be performed on the API (i.e., you should call the API’s operations).
- You must create a package named final_exam in the main folder of your project to place the code of all the components (Java Classes) that you implemented during the exam (i.e., Controllers, Services, Assemblers, DTOs, Entities and Repositories). The tests must be included in a package named final_exam placed in the folder test of your project. If you use a fixture file containing SQL scripts in your tests (i.e., in the resource folder), the file must be named exam_dataset.sql. Note that we will NOT grade any operation/component implemented outside of the packages/files described above. However, you can use any of the components defined previously in RentIT, if they are invoked from a component implemented by you during the exam.
- You must create a PRIVATE Bitbucket or GitHub repository for the exam. Add the teaching staff as collaborators to your repository. Username: mcamargo85 (email:
manuel.camargo@ut.ee
), Elkoumy (email:gamal.elkomy@gmail.com
), orlenyslp (email:orlenyslp@gmail.com
). Please leave your solution in the “master” branch of your repository. Do not make any commits to “master” after the end of the exam. You should submit a file with the link to your repository with the solution through the course webpage. - In the practice exam, you will have to design the sequence diagrams the components (i.e., Controllers, Services, Assemblers and Repositories), method calls and message exchanges on the operations that you implemented to fulfil the scenario described by the exam. The latest also include components that you are reusing from RentIT, e.g., if you need to create a plant reservation, the PlantReservationRepository must be part of your diagram even if it was implemented before the exam. Note that the diagrams must contain all the components, method calls, and messages in your implementation, with the same name you are giving to them in your application. You can use any tool you prefer to draw the sequence diagrams. Also, you may use a pen and paper, and then submit a picture of the models. Add your models to the project repository.
- IMPORTANT: You MUST commit to the repository each time that you complete a task or requirement in the exam. You will find at the end of the exam description the (minimum) list of commits messages that we expect, e.g., "Task 1 Completed", "Task 4, R2 completed", etcetera. Thus you can copy the messages of your commits from the exam description. You are welcome to add other commits too, for example, if you fix a task which you committed as completed before. For each commit missing (from the list given in the exam), you will get a penalization of 20% of the points received in the corresponding task. Note that commits whose messages do not correspond to the labelled task will get a penalization of 20% too. For example, if your commit message states "Task 2, Completed", be sure that the code submitted corresponds to task 2; however, other parts of the implementation may be updated too. Finally, we will discard all the commits submitted after the end of the exam.
- VERY IMPORTANT: We strongly suggest you not to share your code before the end of the exam, to avoid misunderstandings. In the case of projects in which it is evident that the students committed fraud, all the involved students will get 0 points in the exam, meaning that they all fail it. Note that we will use several scenarios during the final exam. Thus we do not see a way to explain how the code regarding one scenario is in the implementation of another scenario. Also, if we observe suspicious behaviour either in the implementation or the commits, the students involved will be called for an online interview with the teaching staff. Examples of suspicious behaviour can be, all the commits happening at the end of the exam or with a non-realistic timeline, too many similarities between projects, etcetera. During the interview, the students will be asked about the code they submitted. Note that, during the interview, we will downgrade the mark of the student for each question not answered correctly, meaning that the student may fail the exam in the meeting.
- MOST IMPORTANT: We wish you the best of luck during the exam. An important remark, working on your project and homework is the best exercise to succeed in the exam. If you participated actively in your project, you have nothing to be worried about the exam, so you are already ready for it.
Exams from previous years
- Sample Theory Exam 2020
- Exam 1 2019
- Exam 2 2019
- Sample Fall 2016 exam (this exam has a different structure)