CMT653 Programming Principles and Practice
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 files, I will only consider the first 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.
Reflective 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 definition of classes/methods, use of appropriate types. |
Code shows most (at least half) classes/methods are defined 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 fits 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.
Reflective 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)
2021-12-25