This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are:
- to build your skill applying computational thinking to a problem
- to assess your knowledge and skills of different programming practices
What is this problem set trying to do
You must be able to look at a real-world problem and using computational thinking, decompose it into smaller parts. you will be using file operations, user input, and perhaps serialization.
Contact tracing is the process of identifying, assessing, and managing people who have been exposed to a disease to prevent onward transmission. When systematically applied, contact tracing will break the chains of transmission of COVID-19 and is an essential public health tool for controlling the virus.
Contact tracing for COVID-19 requires identifying people who may have been exposed to COVID-19 and following them up daily for 14 days from the last point of exposure.
It may be helpful to start with Contact tracing: part 1
You must write a program which a medical professional would use to interview a patient newly diagnosed with covid-19. Your program must:
- accept input for the patient:
- first name, last name, alias
- city, postal code, street
- phone number
- best phone number to reach you, secondary phone number
- email, other best way to electronically reach you
- date of infection
- todays date
- This data must be saved in an external file so your program has persistence (you can stop the program and then re-run the program and the data will be saved).
- the file you save must be human readable. You will probably want to save this file as a JSON file, or XML. Probably JSON.
- Your program must assign a UNIQUE ID to each patient.
- This data will be used and accessed by other parts of your contact tracing app, so please design it carefully.
- This program must stand alone; it should not include any other parts of any other program.
- All data must be correctly checked for type or an exception must be raised. Do not allow invalid data!
How you will be assessed
Your solution will be graded using the following axis:
- To what extent does your code implement the features required by our specification?
- To what extent is there evidence of effort?
- To what extent did your code meet specifications?
- To what extent did your code meet unit tests?
- To what extent is your code free of bugs?
- To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?
- To what extent is your code eliminating repetition?
- To what extent is your code using functions appropriately?
- To what extent is your code readable?
- To what extent is your code commented?
- To what extent are your variables well named?
- To what extent do you adhere to style guide?
A possible solution
Click the expand link to see one possible solution, but NOT before you have tried and failed!