School of Computing & Information Technology CSCI251/CSCI851 Advanced Programming Spring 2017
School of Computing & Information Technology
CSCI251/CSCI851 Advanced Programming
Assignment 1 (Worth 10%)
Due 11:55pm Friday 1st September 2017. (End of Week Six)
This assignment is to be implemented using procedural programming. The overall program should process
patients through a medical centre. This is not supposed to be a sensible simulation of such a centre, and
does not comply with typical operating practices for such centres.
General code notes
These are some general rules about what you should and shouldn’t do.
1. Your assignment should be organised into:
(a) A driver file containing your main() function.
(b) A header file containing the prototypes for the functions you write.
(c) An implementation file containing the implementations of your functions.
2. Your code must compile on Banshee with the compilation instructions you provide in Readme.txt.
3. You are not allowed to use classes.
4. You can use structs, but without member functions.
5. You should include some exception handling in the case of data file unavailability.
6. Be consistent in your tabbing style.
7. Include sensible volumes of commenting.
8. Use appropriate variable names.
9. Don’t leak memory.
10. The main() function should make it clear what is going in, and shouldn’t be too large.
If your program were to be compiled into the executable MedCent, it must run as follows:
$ ./MedCent Patients Output-file
The Medical Centre runs on a strict quota system, and closes after seeing the number of Patients specified
as the command argument, or when there are no Patients left to see.
There is otherwise no sense of time in this program, so it’s possible every patient could see the same
Errors should be reported to standard error. Runtime progress should be reported to standard out. A
summary of what happens to each patient should be passed to whatever file is specified on the command
line as the Output-file.
When you load the data files, you should output the content in a sensible format to make it clear that
your input processing works.
• You should deal with the patients on a one by one basis.
• Each patient will need to see a randomly chosen doctor of the same gender. If at any time there is
no available doctor of the same gender, the patient leaves with their ailment unresolved.
• The doctors will attempt to diagnose the correct ailment, with the percentage change of doing so being some sensible function of the doctor’s quality, the ailment degree, and the ailment determination
complexity. You should specify this function in your Readme.txt file.
• If the doctor fails to identify the correct ailment, the doctor will guess at the ailment, equally likely
to specify any ailment including the correct one.
• If a doctor determines that the patient has a particular ailment they will apply the treatment
associated with that ailment.
• The chance of the treatment working should be some sensible function of the doctor’s quality and
the ailment treatment complexity. If it’s the wrong treatment, the chance of it working should be
25% of the chance when using the correct treatment. You should specify your success function in
your Readme.txt file.
• Once given a treatment the patient leaves, whether the treatment is successful or not.
Sensible with respect to the functions above means that increasing or decreasing the arguments should
change the chance of success in a common sense way, so a higher quality doctor, higher ailment degree
and lower ailment determination complexity give better chances of success.
Four data files will be provided. The general syntax of those files is described here, and examples are
provided on Banshee in /share/cs-pub/251/Assignments/One/. Those files are in Unix format so if you
copy them over to Windows and back to Unix there may be additional characters, particularly the end of
line ^M that may appear.
The four data files are as follows:
1. Patients.txt: No more than 100 entries.
The Age, Ailment and Ailment degree are all integers, with the Ailment degree a percentage in the
range 1 to 100. Gender is a single character. The title and name can be anything, although while
the title can be empty there must be a name. The Ailment corresponds to the Ailments listed in the
The higher the Ailment degree the worse the case of that Ailment the patient has. The higher it is
the easier it is to recognise.
2. Doctors.txt: No more than 10 entries.
The name cannot be empty. Gender is a single character. The quality is a percentage in the range
1 to 100.
3. Ailments.txt: No more than 20 entries.
Name,Ailment determination complexity,Ailment treatment complexity,Treatment.
Ailment determination complexity and Ailment treatment complexity are percentages in the range
1 to 100. The lower the Ailment determination complexity, the easier it is to recognise the ailment.
The higher the Ailment treatment complexity. the harder it is to treat the ailment successfully.
The Treatment corresponds to the Treatments listed in the Treatments.txt file.
4. Treatments.txt: No more than 10 entries.
If a given data file has an incorrectly formatted line, you should report the problem and
ignore that line.
Errors should be reported to standard error. Runtime progress, included the file loading output demo,
should be reported to standard out.
A summary of what happens to each patient should be passed to whatever file is specified on the
command line as the Output-file. This should include the doctor seen, the ailment diagnosed, and the
treatment, and whether the treatment was successful.
Notes on submission
Submission is via Moodle.
Your code must compile on Banshee with the instructions you provide. If it doesn’t you will likely be
given zero for the programming part of this assignment.
Please submit a single zip file with all your assignment files in it. Do not include subdirectories, that slows down marking!
Note that in addition to the code you need to submit Readme.txt, containing your compilation instruction and the functions mentioned earlier.
Do NOT submit
1. The deadline is 11:55pm Friday 1st September 2017.
2. Late submissions will be marked with a 25% deduction for each day, including days over the weekend.
3. Submissions more than three days late will not be marked, unless an extension has been granted.
4. If you need an extension apply through SOLS, if possible before the assignment deadline.
5. Plagiarism is treated seriously. Students involved will likely receive zero.
c Luke McAven, SCIT-EIS-UOW, 2017.
[contact-form-7 id=”232″ title=”Contact form 1″]