CSC148H - Summer 1996

Comments from Ned and Michalis on Assignment 2


Ned's comments on Assignment 2. Parts I, II, III, and XI.



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



Michalis's Commments.


First of all, we that marked this assignment, would like to apologize for any possible mistake in correcting. Furthermore, We would like to apologize for any injustice done. We would like to assure you that we had only the best intentions. Please feel free to contact us if any correction is needed. However, first read the following comments. If you still have reasons to believe that serious up-grade or (down-grade -- haha) is needed then contact us. By serious, we mean something of at least 5%-10%. Here are some comments for Assignment 2.

GENERAL

TECHNICAL