DOs: 1. Simplify -> 2D. Use this to work out your algorithm. 1a. Start by considering simplest arrangements of circles that have/have not voids and/or cavities. 2. Visualize. 2a. For 3D visualization use Rasmol -- this is what we will use to test the output of your code. 3. Put your protein on a regular cubic grid. That will address the resolution question. 4. Bounding box (parallelepiped). Will need to d to distinguish cavity from void. 4a. Box boundary = outside. 5. Analysis of the problem (and possibly even algorithm building) will simplify if you bloat each atom by the probe radius. Then, voids are points in space not occupied by the bloated atoms. 6. Create lots of test cases for which you know the answer by construction. 7. Team work is key. Regular meetings! Division of labor (e.g. one team member builds test cases, etc. ) 7a. For success, it is virtually a must that by the time you finish part II, you already have a code that reads correct input, and outputs files in the corrct format, which can be visualized by e.g. rasmol or pymol. That will help you a lot, especially with creating your own test cases, which is also a must. 8. Stay away from complex algorithms. The simpler the better. Simpler algorithms are usually more robust. Brute force may just be OK. DONTs: 1) Do not assume the atom positions have any regularity to them. 2) 1D. Too simplified, throws baby away with bath water. 3) Do not try to find the actual exact boundary of the protein. Hard. The bounding box gives you the natural, easy to find "outside". 4) Under no circumstance start working on the exatra credit unless the main problem has been worked out and tested thoroughly!