Computer Laboratory

Supervisions

Supervision questions: Software Engineering

This is the set of questions for my supervisions in Software Engineering. I will typically email you a list of question numbers before each supervision, but if not, attempt the next two or three. (More questions will appear here as I set them, so come back if you want to make an early start on some of the future work.)

Administrativa & handing in work

I expect you to make a good attempt at producing solutions to the relevant questions before each supervision. I prefer submissions by email (PDF or text format). Please submit your work 24 hours before the supervision. If you want to submit a hard copy of the work to student administration, please hand it in before 17:00 two days before the supervision (i.e. before Wednesday, 17:00 for a Friday afternoon supervision) as I will have to scan it. Remember that Student Administration is closed on weekends.

When emailing me regarding supervisions, please only use my lab address, or your email will be misfiled and may slip by unnoticed:

The mark allocation (whilst very approximate) should give you a rough idea of how you should divide your time between the questions, as well as how much credit I expect a similar question to be worth in the exam. It will also serve as a guide for me when marking the questions.

If there is a particular part of the course you would like explained, or questions you have about the lectures (independent of whether they are covered by the questions or not), please let me know in an email before the supervision so that I can prepare appropriately.

Supervision 1: disasters and methodologies

  1. 2010 Paper 3 Question 8 [20 marks].
  2. 2011 Paper 3 Question 9, parts (a) and (b) only [12 marks].
  3. 2004 Paper 2 Question 7 [20 marks].
  4. 2003 Paper 2 Question 7 [20 marks].

Supervision 2: engineering tools

  1. 2000 Paper 2 Question 8 [20 marks].
  2. 2008 Paper 5 Question 1 [20 marks].
  3. One practical, and widely-used, unit testing suite is Google's C++ testing framework. Using this framework,
    1. write a simple implementation of a linked list of integers in C++, and write corresponding unit tests for it.
      [The JUnit testing framework is very similar to Google's C++ testing framework; if you prefer, you may use it instead for the first part of this exercise.]
    2. using unit tests, find the bugs in this source code (there exist at least two!).
    3. You may find this Makefile helpful when building your code and the unit tests.
    [15 marks].
  4. Read up about the methodology of test-driven development, explain how it works (with reference to e.g. Google's testing framework), and describe its advantages. Do you think this methodology is useful? [8 marks].