Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CMT653 Programming Principles and Practice



Assignment

This assessment consists of two parts:

1. A client project, evidenced using a document listing references to code snippets from this project

2. A reflective report, which shall use your own examples of work done for the individual project (CW 1) and for the client project – this may include code snippets not evidenced in the document mentioned in the previous point


Client project

The brief for the client project will be given out in advance of the project phase beginning in Week 7.  You should submit a document listing 3-5 ex- amples of .java files that you were the main contributor towards, that you feel represent your best work for the client project. If you submit more than 5 les, I will only consider the rst 5 listed, and will ignore any others. There is no specific percentage of code within a file that you have to have contributed towards, but you will want to choose files that contain non-trivial methods. It’s up to you which files you show me, as long as they have a .java extension, I will consider the code you wrote within those files. I will be using these to evaluate the Design and Code readability and presentation criteria for the client project. You can reproduce the code within the document submitted, but should, at a minimum, provide links to the relevant files in the GitLab repository (I can see the parts you con- tributed towards within GitLab using the Blame tool). If you reproduce the code, you should still provide links to GitLab. In addition, you must give me reporter access to the GitLab project for your client project.


Reective report

This will consist of a report reflecting on your design and implementation choices (approximately 2000 words), and will include associated code snip- pets. (More detail on what is required is given in the Criteria for assessment below.)


Learning Outcomes Assessed

Completion of this coursework allows students to demonstrate that they can:

1.  Decompose problems into units of code using paradigms such as pro- cedural and object orientation, critically analysing design choices.

2.  Design, write, read and debug code effectively, through knowledge of syntax and understanding of core concepts using different languages (e.g. Python, Java), critically reflecting on design decisions.

3.  Demonstrate a thorough understanding of the principles of object- orientation  (OO) by effectively designing  and implementing classes and interfaces, according to those principles, for real world problems.

4. Effectively use compilation and execution environments, understand- ing and making use of their error reporting.

5.  Make use of external libraries where appropriate and explain the ra- tionale for doing so.

6.  Test code by developing simple automated tests and explain the ratio- nale for doing so.

7.  Demonstrate a systematic understanding of computing concepts, both theoretical and practical.



Criteria for assessment

Credit will be awarded against the following criteria.



Client project 35% of total mark for assignment

This section assesses Learning Outcomes 1–7.



Criteria

Fail (0-49%)

Pass (50-59%)

Merit (60-69%)

Distinction

(>= 70%)

Design [2/3]

Code design

poor/there little design

evident.

Code shows some appropri- ate denition of classes/methods, use of appropriate types.

Code shows most

(at least half) classes/methods are dened ap- propriately, use of appropriate types. Use of composition and/or inher- itance         where appropriate.

Code shows all classes/methods are defined appropriately, use of appropriate types. Use of composi- tion and/or inheritance where appropriate. Code is maintain- able through design

(increased cohesion, decreased coupling, use of encapsulation).

readability presentation

Code is unread- able. No com- ments.

Code is readable. No comments.

Code     is     well- presented, some appropriate     use of comments.

Code  is well-presented, appropriate use of comments throughout

(across all classes). Appropriate means, at the least, explaining anything that is not apparent in the code (what fields/methods mean), and breaking down more complex methods into steps. Higher marks within this criteria could be obtained through

the pur-

pose  behind  code and choices made within it, and showing how each component ts into the bigger picture.


Each of the criteria above will be evaluated by examining the code snip- pets provided in the document submitted for this purpose.


Reective report 65% of total mark for assignment

The reflective report consists of a PDF report reflecting on the two projects undertaken during the semester (the individual project and the client team project), along with snippets of code that you have written yourself. For each of the two projects (the individual and client team project), each of the sections below should be evidenced in the reflective report:

· Problem decomposition into classes (LO 1, 2): a description of

how you came to choose the classes you used for the problem given, and an analysis of how this impacted on the development process. A justified discussion of how your code relates to the principles we covered in class  (in particular:  encapsulation,  maximising cohesion while minimising coupling). In addition, briefly explain your choice of programming paradigms (e.g. procedural, object orientation)

· Method choice (LO 1, 2): choose 2 methods.   For each, reflect

on how easy/difficult it may be to maintain.  How well do you think each is written, and are there areas where you think you could make improvements?   The methods chosen should not be getters/setters; you should choose a method that is long enough to be able to discuss its quality and ease of maintenance

· Other implementation choices (LO 2, 5): For the fields within

one class, explain why you chose the data types you used within that class.  Provide an example of where you used an external library in your code,  and explain why it was appropriate to use that library. Alternatively, justify why you did not use external libraries in your code. You may also like to consider where external libraries could be used in future development of your code

For the client project only, each of the sections below should be evi- denced:

· Understanding of error reporting (LO 4): there are 3 types of

errors that may be encountered during development:  compile-time, runtime, and logic errors. Provide 3 screenshots of errors encountered during development, and describe how you corrected them. You may choose to show one of each type of error (1 compile-time, 1 runtime, 1 logic), or 2 of one type and 1 of another  (e.g.   2 compile-time,  1 runtime), but should not show 3 examples of one type (e.g. 3 compile- time)