Ob jective
BEng Biomedical Engineering Object-Oriented Programming
Coursework Resit
To gain practical experience of object-oriented design and programming using C++ on a biomedical problem.
Introduction
Positron Emission Tomography (PET) scanning is used in cancer diagno- sis and treatment monitoring. PET scans such as the one shown to the right can be used to visualise potentially cancerous tumours and to mea- sure a Standardised Uptake Value (SUV) for a tumour, which indicates its level of metabolic activity. Tumours are typically characterised as benign or malignant, and malignant tumours normally have a higher SUV than benign ones. Patients can undergo PET scans for initial identification of tumours, for staging of the tumours (i.e. determining how severe the cancer is), and for monitoring response to treatment. Therefore, a patient undergoing treatment for cancer may have a number of PET scans over a period of months or years.
A hospital PET centre is developing a software application to store information about their patients and the PET scans they undergo. For each patient, they wish to store their name, date of birth and NHS number (all strings). For each PET scan, they wish to store the date of the scan (a string), the patient’s weight (a floating point number), an integer indicating the number of the scan in the sequence that the patient undergoes (i.e. 1=1st scan for this patient, 2 = 2nd scan etc.) and the SUV of the patient’s primary tumour as measured from the scan (another floating point number). Each patient has a single primary tumour, and the PET centre wish to store its type (benign or malignant) and location (head, liver or lung). Currently, the software application only needs to store information about a single tumour per patient, but the system may be expanded in the future to store information about multiple tumours per patient.
Instructions
Your task in this coursework is to design and write a C++ program using Code::Blocks to store the information required by the PET centre.
First of all, you should produce a UML design of the problem that captures the requirements outlined above. You should use information hiding when creating your design and this should be reflected in your UML diagram.
Next, you should implement your design in C++ using Code::Blocks. As well as implementing the classes with the necessary attributes, you should implement all inspector and mutator functions. In addition to the requirements outlined above, your implementation should contain the following two behaviours:
1
• For a given patient, save to a text file the SUV values measured from all of their PET scans, together with the date that each scan was acquired.
• For a given patient, classify their primary tumour as benign or malignant and store this information as the tumour type. A tumour is described as benign if it had an SUV of less than 3 in the most recent PET scan, otherwise it is described as malignant.
You can assume that no patient will have more than 100 PET scans.
You should write a short main function to create some data for the objects in your design, and to demonstrate the operation of the two required behaviours.
Reporting Requirements
You should submit a Code::Blocks C++ project that meets as many of the requirements as possible.
You should also submit a short written report explaining your object-oriented design. The report should include the UML class diagram and a short explanation of the meanings of the class(es), attribute(s) and behaviour(s), as well as a brief description of the object-oriented design process that you went through to produce your design. To help you in producing this report, a sample model report has been made available to you through the KEATS system (called Sample model report for courseworks 2 and 3). Your report should not need to be longer than 3 pages of A4, and can be shorter.
Submission will be via the KEATS system. The submission point will only allow you to upload a single file so you should combine all files into a single zip file. The name of the zip file should be in the format SURNAME-FIRSTNAME-CW.zip.
The hand-in date is 20th August 2020, 5 pm. Late submissions (within 24 hours of this deadline) will be accepted but will be capped at the module pass mark (i.e. 40%).
If your program does not meet all requirements then please submit what you have written by the deadline.
Assessment
Your coursework will be marked on a number of factors:
• Whether the program works, how many of the requirements it meets, and the extent to which the program has been tested. (50%)
• Whether the program design demonstrates an object-oriented approach to the problem. Whether this is shown in the implementation by appropriate use of C++ language features, e.g. functions, classes, composition/aggregation/inheritance, etc. (30%)
• Written report (15%)
• Clear and readable code that is easy to understand, incorporating comments, good indentation
and appropriate variable/function names. (5%)
The overall mark for this coursework will make up 40% of your total mark for this module.
If you have any questions about this coursework please contact Donald Tournier (jacques-donald.tournier@kcl.ac.uk
Object-Oriented Programming Page 2 of 2 Coursework Resit
)