I marked parts I, II, III, and XI of Assignment 2. I will discuss some issues related to these parts. I am expressing my opinion, so if some of the instructors, other tutors, or students do not agree, please write your comments. If you are not happy with your mark on some (or all) of these parts, please carefully read the text below, and if you are still unhappy, then contact me. If you are not in my tutorial, the best time to talk to me is during my office hour, which is on July 8, 7-9 pm. I. Informal Specification. ------------------------- Almost everybody has done this well. Parts II and III. ---------------- I believe that the specifications and the proof will be posted. I have not written many comments on your proofs. It would take me forever to explain the mistakes of so many people. My overall impression is that few students know how to write a formal specification and carry out a reasonably good proof. I would say that roughly 10% have done a good, but not a perfect job on II and III. II. Formal Specification. ------------------------ 1. Most students have as a loop invariant only 1 <= i <= ALPHA_SIZE+1, which is not enough. 2. Many students assume that they do not have to write explicitly the formal specifications outside their programs, i.e., in the report. Then they start proving things for which I had to look in the code. You should state explicitly what you are planning to prove. Marking: I used the following (rough) scheme: Preconditions 2 (marks) Postconditions 4 Loop invariant 4 If you have only 1 <= i <= ALPHA_SIZE+1 as a loop invariant, then you probably have 7/10, but you might have 6/10, or 8/10 depending on how well you have stated your conditions. If you have 9/10, then you are close to the complete specifications. 3. If you have not stated formal specifications explicitly, then I had to use some common sense to increase your mark from 0/10. In other words, depending on what is in your proof, I have given between 2/10 and 4/10. III. Proof. ---------- I used the following (rough) scheme: Base case stated properly 1 Induction hypothesis 1 Induction step 7 Partial correctness 4 Termination 2 If you have proved, reasonably well, only the invariant 1 <= i <= ALPHA_SIZE+1, then you are most likely to have 10/15. However, you might have 7, 8, or 9/10 depending on the quality of your proof. If your mark is above 12/15, then you are close to the complete proof. XI. Report ---------- Write well organized reports; otherwise, it takes time to find things in them. If your handwriting is difficult to read, then try to type your reports. Some reports are really long, some are very short. Try to write concise but complete reports. It is not easy, but helps in the long run. 1. Data Structure. There is a difference between a data structure and a method. A few students have used these terms interchangeably. When you describe a data structure, insert the code for this data structure in your explanation. Some have not explained the data structure. 2. Method. I think you should try to give an overall description of the method, and then describe particular parts. Also, try to explain which part is implemented by which function. It helps if you list the name of the functions you are using with a description of the parameters. If you do not have an explanation of the procedures used, then you probably have 3/5. 3. Explanation of Tests. Often the tests were not explained, or not explained well. You should include in the report explanations of the test. Try to include tests that deserve attention, i.e., try your programs for general inputs and border cases. If the tests are described where the output is listed, but not in the actual report, then you likely have 1/5. 4. Writing Style and Clarity. If your report does not give sufficient detail, or it is very short, then you probably have 3/5 or 4/5. It will help other tutors if you put your cover sheet on the front of the envelope. General Impression ------------------ 1. The students have worked seriously on this assignment. 2. The main difficulties are in the proof, but these types of proofs are not trivial. 3. The reports need better organization and more thought. Some Further Advice ----------------- Study proof of correctness. Try to organize your assignments and highlight the main parts so that your assignments are coherent and easy to read. Good luck with the next assignments. Ned
GENERAL