(CDT310 Foundations of Software Engineering and CDT311 Game Development - project course)
Here are directions for some exercises you should do in order to 1) pass the course and 2) become a good software engineer.
There are four main categories of exercises: text book exercises, old exams, homeworks, and labs. They have slightly different focus and purpose, and also different reward systems: labs are also mandatory and worth one course credit, and in addition the labs and homeworks can give bonus points on the exam.
Note: An important skill of a software engineer is to be able to make engineering judgments, which means understanding when information is lacking and making some reasonable assumptions in order to be able to continue. In addition, a good engineer has a sense of when to make such assumptions and when to pursue some issue for more details. Therefore, many assignments (including those on the exam!) are not fully specified – or could sometimes even be over-specified and contain conflicting information. It is your task to make some realistic assumptions (and specify them explicitly) and provide the best answer/solution you can! There are often no such thing as “the correct answer” but issues may be open to interpretation and discussion. (However, many answers would be outright wrong!)
At the end of each chapter in the text book(s), there are good exercises. I suggest you develop your basic skills in each topic by solving a few very concrete exercises for each chapter, such as “…suggest three requirements” (Sommerville Exercise 7.3 at the end of chapter 7) as well as consider a few oriented more around discussion and reflection, such as “…Explain why…” (Sommerville Exercise 7.1). Please take the opportunity to discuss any questions that arise in connection to the lecture.
The old exams will let you practice on what are considered important parts of the course – and will also give you a hint about the type of questions you should expect on the exam! Note that all written material is allowed, such as text books, printout of lecture slides, old exams (and solutions), and your own notes and laborations of course. (This means that the questions on the exams are not of the form “explain a simple term” – which you can simply look up – but you will rather be asked to apply your knowledge to examples, such as in questions of the form “given this example project, plan it according to development model X and create a Gantt chart” or “create a statechart diagram for the following system” etc. You may then look up details about e.g. syntax in the literature.)
The homeworks are voluntary but if you solve them (and submit them in time!) you may get bonus points on the exam.
Homework 1 (0.0 – 1.0 bonus points on the exam) Project planning (suitable after lecture 3)
Homework 2 (0.0 – 1.0 bonus points on the exam) Requirements elicitation (suitable after lecture 4 and lab 2)
Homework 3 (0.0 – 1.0 bonus points on the exam) Design (suitable after lecture 7 and lab 5)
Homework 4 (0.0 – 1.0 bonus points on the exam) State chart + Fault-tree analysis (suitable after lecture 6 and lab 6)
Homework 5 (0.0 – 0.5 bonus points on the exam) What does it mean to work as a software engineer? (suitable anytime…)
Homework 6 (0.0 – 1.0 bonus points on the exam) Implementation and analysis of a real-time system (suitable after lecture 8)
The homeworks may be solved individually or in pairs (in which case the bonus points will be split between the two students). Please write in English. The solutions should be mailed to firstname.lastname@example.org at latest March 10th with subject “CDT310: homework X” (where X is the homework number), and make sure you write your name (not always so easy to guess from the email address). We will go through the homeworks some time during the two last lectures. The grading will give you a hint on what you know well enough and what you need to study more, but other than that there will unfortunately be little opportunity for individual feedback on the homeworks.
The best solution on homeworks 1-4 and 6 will be asked to present the solution to the class during one of the final lectures or lessons, which will give 0.5 bonus points extra.
Laborations are mandatory and worth one course credit. In addition, if you solve them in time you will get bonus points on the exam. See lab page.
No. of access: [an error occurred while processing this directive]