ñéîåï ùâéàåú áäâùåú ùì úøâéìéí

 

Exercise 8:

 

General:

A: No documentation at all (-10)

B: Code general issues (won't compile) (up to -100)

X: No sources in the submission (leads to 0 grade).

Y: Interface based work (IAddressBook interface at least) (+3)

 

Address / Contact

C: Bad encapsulation of Address / Contact (Not making the fields private) (-2 each)

 

Address book:

D: Using wrong DS (not the tree map) (-3)

E: Not asserting that a contact has a name. (-3)

F: Method not asserting appearance of contact (-2) [Modify, Delete]

G: Method not asserting that contact doesn't appear (-2) [Add]

H: Method not asserting parameter != null (-1) [Add, Modify, Delete, Search]

I: Bad implementation of the search method (-4)

J: Not throwing an exception on error (-2 per method)

 

TUI:

K: Not asserting first command is [n | l] (-4)

L: Wrong input would halt (-5) or crash (-10) the program

M: Improper printing. (-2).

 

 

Exercise 7:

 

A: Code duplication (no delegation between doGet & doSet) (-5)

B: Not trying to explain how service() works. (-5)

C: Error in acquiring the parameter. (-5)

D: Not setting the response type as text/plain (-5)

 

X: No sources in the submission (leads to 0 grade).

Y: Handling error cases (such as non numeric format) (+5)

 

 

Exercise 6:

 

A: No documentation. (upto -10)

B: Constants in code instead of const ints. (-3)

C: Not using List or some other extensible data structures on growing fields. (-2)

D: No field encapsulation (-5)

E: Writing the entire application as a single class, no OOP. (-8)

F: Not advancing according to the length fields, but performing linear search for (FF). (-10)

G: No EXIF parsing. (-50)

 

V: Implementation bug / Application doesn’t solve the problem. (upto -100)

X: No sources in the submission  (leads to 0 grade).

 

Y: Really pretty OOP. (+5).

 

 

Exercise 5:

 

A: Assuming knowledge of the board size and not using the constants for computation. (-5)

B: Explanation instead of logical analysis (-5)

C: Not analyzing Alpha-beta move (-5)

D: Not implementing score / score returns constant (-30)

E: Not implementing isGameOver (-20)

F: Score doesn’t reflect state / not using the full (0,1) range (-5)

G: Adding public aux methods (-5)

H: Possible out of array bounds during run (-10)

I: Bad code indentation (-5)

J: When checking for full board passing not only on the top row (-5)

K: No proofs at all (-30)

X: No sources in the submission  (leads to 0 grade).

 

 

Exercise 4

A: Wrong package name (-5)

B: Not validating the array is long enough (possibility of out of bounds exception) in isASet (-5)

C: Bug in extend – not filling the newly allocated part with -1 values (-5)

D: Inefficiency in extend – filling the original part with -1 values and then overriding (-3)

E: Inefficiency in extend – double allocation or on no growth allocation (-3)

F: Any helper function declared as public (-4)

G: Not implementing isASet / loop in isASet(-10)

H: Not implementing equiv (-10)

Exercise 3

A: Wrong package name. (-3 points)

B: Not validating that the return value from a search method is not null (3 methods = -5 points)

C: Bad naming of the helper recursive methods (-3 points)

D: Allocation of object in the search methods (-3 points)

E: Storing extra class variables (for lookup, for example) ( -5 points)

F: Wrong return value from findDepartment / findWorker ( -5 points)

G: Bug in findDepartment ( -5 points)

H: Code duplication between the original and the helper methods ( -4 points)

I: Bad encapsulation of the helper recursive metods ( -3 points)

X: Empty / corrupted / no source code submission (Leads to 0 grade).

Y: Helper methods in the department class. (+3 points)

Z: Implementation and usage of additional helper methods (such as fire employee, move employee etc.). (+3 points)

Some more notes:

Starting ex4 I'm going to use automatic test scripts on your works, so make sure all the naming issues I wrote about in the feedback of the first 2 exercise are taken care of. If not contact me ASAP and I'll see what can we do. Specially - for all who still can't write the package name right – you were warned.

Now about this exercise - almost all of you didn't check for the return value of the search method, and assumed you got some value you can use (error code B). This is correct if you are writing the code, the test methods and sure you will run it once and never see that again. Generally - this will never happen. The user (which is me, this time) should be assumed dumb, and be sure that if you left some opening for him to crush your software he will. For example, what will happen if I invoke fireKermit or reorganize twice - the second time you got wrong behavior. So don't be shy to add some validation code - it will prove worthwhile.

Really many of you would return null from findDepartment invoked with the name of the head department. This is just the case of edge cases - make sure you cover them in your tests. And yes, I expect you to test your methods separately and not only insure your "main" services are functional.

Some of you assumed knowledge of the company structure in the lookup methods. I will accept that only if there is no way that the organization will have another form (this is not the case in this assignment). So in the future - write your services as general as required, and not for the test methods you write.

I added 2 bonus codes - the first is for who implemented the recursive lookup methods in the department class - I just believe it is more correct way of OOP. The second code is for any who added private aux functions and used then instead of dealing with "Departments" and "Workers" directly.

Best regards, have a great week and happy Independence Day,

Sasha

 

____________________________________________________________________________

Exercises 1&2 are checked and the results will be published soon. Due to technical issues, I’m unable to return it to you through the system, so you will get the grades and the feedback through a file in the web site, using error codes. The codes are as follows:

 

Exercise 1

A: Wrong package name. (-5 points)

B: Lack of documentation (-2 points)

C: Not using standard library ABS function (-3 points)

D: Improper indentation of the code. (-3 points)

E: Bug, or improper implementation of the GCD (upto -5 points)

F: Bug in the RHO method (upto -10 points)

G: Elegant recursive implementation of GCD (+2 points)

X: Empty / corrupted / no source code submission (Leads to 0 grade).

 

Exercise 2

A: Improper indentation of the code. (-3 points)

B: Unreadable code (-3 points)

C: Weird mathematical notations (such as j-j instead of 0) (-3 points)

D: Allocating a matrix for MatrixA and then invoking copy and overriding it. (-4 points)

E: Copying the U & L matrices before returning them (-5 points)

F: Changing any of the immutable matrices (-5 points if only in one of the functions, -10 (FF code) else)

G: Lack of documentation (-3 points)

H: Allocating square L, U or the matrix the returned from decompose.  (-5 points)

H: Solving the exercise for a constant size matrix. (-5 points)

X: Empty / corrupted / no source code submission (Leads to 0 grade).

 

Some more notes:

As I’m going to use automatic tools in the following exercises please pay attention to package and method naming (your package name is il.ac.tau.cs.YourUserName.exNwhere N is the exercise number), visibility of the classes and methods (public for everything we told you) and also the name of the files themselves – you must use the same file name as supplied. Also, the case of the package name is important (use only lowercase!!!).
Failing following any of the above will probably fail you submission, so pay attention here.

 

Some students implemented some of the library functions by themselves (such as abs or array copy) – what for? When you have a method in the standard library that does the work use it. You should investigate the java API – this will save you a lot of time in the future.

 

In the following submissions I want the source only. I have no use in any other files, and I don’t want to receive .jar files as well. I want only the plain sources. I will talk to the developer of the submission plug-in and ask him to do so automatically, and maybe also to add some validation on the submitted files (such as names and that all the expected files exist), but in the meanwhile please do so manually.

 

Last issue – the exercises should be submitted in singles. Not pairs and not in larger groups. I have a way to verify it, and already in the first exercise I found some “cliques”. So, please spare me the dealing with dishonesties, these exercises are for you to learn and we are putting a lot of effort both in writing them and in checking them.

 

Best regards, enjoy the holiday,

Sasha

 

òåãëï ìàçøåðä áúàøéê  þþþ23/06/2006 11:40:20.