Your projects will be graded running them on a number of test files for which I have already created correct(we hope) output. Your output will have all punctuation, blank lines, and non-newline whitespace stripped before diffing similarly cleaned files.
Some things, such as the B+ tree printout, cannot be graded by simply diffing because there is no guarantee that we will have the same output. In these cases your project's output will be pre-processed by a more complicated grading program. In the case of the B+ tree, this program will verify that each node has the correct number of keys, that they are correctly ordered, and that all the correct data is at the leaves(and any other rules I may have left out).
Typically each test file will be worth 10 points, and you will be eligable for either 10 or 0 points depending on whether you pass for fail that test. There is no partial credit for an individual test. I may give points projects that fail a test because of 'small' errors after initial grading at my own discretion. The tests will try to test mutually exclusive components of your projects- for instance, a test to check your k-d tree will not print the b+ tree. However, if you don't have a dictionary which at least correctly stores all points so that some 'get lost', you may still end up failing a k-d tree test. So, if you can't get the B+ tree to work you may wish to replace it with a functional BST or similar structure so yuo can pass the rest of the project. (This holds for other structures as well).
Every early submission will overwrite the previous early submission, every ontime submission will overwrite any previous ontime submissions, and so on. So I will have one submission for every valid submission period. (Late policy TBA). I will grade every submission that is saved(including applicable bonuses and penalties) and you will get the highest grade among the them
If there are any errors in my IO you are still responsible for them- the spec is what is in charge. So if you match all my current IO and submit early and then someone points out that I printed the wrong error message for some function, you have to fix your project and resubmit ;) You should be coding to match the command specification, not my sample IO.