Introduction To Programming COSC1519 Assignment 2
Assessment Type
Individual assignment (no group work). Submit online via Canvas→Assignments→Assignment 2. Marks awarded for meeting requirements as closely as possible. Clarifications/updates may be made via announcements/relevant discussion forums.
Due
11:59pm 21/September/2020
Marks
30
1. Overview
There is no book containing the music to every song that will be written. There is no book containing the answers to every mathematical calculation that we will need to perform. Similarly, there is no book, set of lecture slides, video, etc. that will give a programmer (you) the solutions to every programming problem. A programmer is able to take fundamental programming concepts and, with the experience they have gained from analysis, evaluation and problem solving, put them together to solve new problems.
A programmer is also a developer who can plan, minimise risks, iteratively develop, test and deliver programs to a “client”. As a part of this, a programmer should be able to show snapshots of the various stages of the development. The snapshot should be a runnable Java program that does not need to have all of the features that will be there in the final version of the program.
For this assignment, assume that you are a freelance programmer creating a small tool or a utility program of your own choosing to add to your portfolio of simple Java applications. With this project you aim to demonstrate to potential employers or clients how you can:
1. Create a small tool or utility program using (exclusively) a limited set of fundamental code concepts
2. You are able to analyse and evaluate your implementations against possible alternatives in your code documentation.
Note: You must not simply “throw in the concepts” to your program just because they need to be there; it should be clear from the code why a certain concept should be there and you must further justify these through your comments. You will also need debug your code on your own and document any issues, etc. You are given marks on your ability to fulfill all requirements of this document.
If there are questions, you must ask via the Canvas→Discussions→Assignment 2 discussion forums in a general manner (replicate your problem in a different context in isolation before posting).
2. Learning Outcomes
This assessment is relevant to the following Learning Outcomes:
1. Demonstrate knowledge of basic concepts, syntax and control structures in programming
2. Devise solutions to simple computing problems under specific requirements
3. Encode the devised solutions into computer programs and test the programs on a computer
4. Demonstrate understanding of standard coding conventions and ethical considerations in programming.
Page 1 of 4
3. Communication and help
For equitable teaching, learning and assessment, all questions relating to assignment first need to be asked via Canvas→Discussions→Assignment 1. As debugging is a part of programming, Assignment code cannot be debugged by your instructors. However, if you replicate the issue in isolation, in a context that is different to what will be used in the assignment, debugging help can be offered.
4. Assessment details
Note: Please ensure that you have read sections 1-3 of this document before going further.
You must meet Functional Requirements (4.1), Code+Justification Requirements (4.2) and Documentation Requirements (4.3) to obtain the full mark for this assignment. You can also attempt the Bonus Requirements (4.4).
4.2) Code+Justification Requirements (26 marks):
To receive marks for Code+Justification requirements, you must use the following code concepts to make a functionally cohesive program that also meets the functional requirements. Concepts must be used as demonstrated during weekly live lectures (Monday night). Code without justification in the given format would attract no more than 50% of the mark allocated for that component. Comments without code will not attract any marks.
An important note on Java code validity: A program with even one red dot (compilation error) cannot be tested and therefore will attract 0 marks for this section.
Code concept
Requirements (1 x 26 = 26 marks when justified as required)
CJ1) Single-class object oriented code and format
• Has only 1 class (must not use names like Assignment2.java); Follows conventions shown in IIE solution lectures, other standard class materials and common ones in the Java API.
• The main method should have only one line to create an object of the main application class (refer to startup code and week 6+ weekly live lecture examples).
• Formatting is consistent. Documentation comments start on the line before the documented block/statement (e.g. not in- line comments).
• Only relevant, reachable code+comments included.
• Does not use break, continue, System.exit or similar branching (spaghetti code) anywhere in the code and does not return from the middle of methods.
CJ2) Variables
• The class can have object member variables (may include arrays) that are explicitly private and non-static. • Demonstrates understanding of primitive data types vs. class types where relevant.
• Whenever a method refers to an object member variable, it uses this. (i.e. “this dot”, e.g. this.gt).
CJ3) Constructor
• The class has one constructor and all object member variables, arrays, etc. declarations are explicitly initialised in this constructor before any other operations (e.g. there are no equal signs where member variables are declared).
CJ4) Methods
• Methods are created when absolutely necessary or when it reduces duplication of code. • One or more methods created by student must return values
• One or more methods created by student must take parameters (can be same as above)
Page 2 of 4
4.1) Functional Requirements:
Important: The functional requirements below must be implemented and justified by following the 4.2 Code+Justification requirements.
F1) Allows the user to store an arbitrary number of records of the same type. May store more than 1 type of record. F2) Allows the user to add/remove/modify such records.
F3) Inputs must be validated to reject values that are outside of expected value ranges.
Tip: As you are not given marks for creativity or the usefulness of the program, do not spend too much time thinking of what is a “good” program. What is good depends on how well the code is written, justified and documented (refer to sections 4.2 and 4.3).
• All methods are explicitly public and non-static.
CJ5) GTerm
• Uses at least two separate GTerm windows: one for main menu or high-level operations and at least one for more specialised/sub operations (e.g. entering/editing details).
• Uses GTerm exclusively for inputs. Most, if not all, inputs must be taken via either text fields or text areas (vs. getInputString). May use password fields.
• Uses GTerm exclusively for outputs. Output must not be via message dialogue boxes when possible.
• Uses setXY, setFontSize, setFontColor, setBackgroundColor, clear, addImageIcon methods to enhance the presentation of the program. When using addImageIcon, images must be loaded from the default/project folder (do not include folder names) without prompting the user to choose the file.
CJ6) Conditional execution and repetition
• Uses if/else/else-if appropriately and exclusively for non-repeating conditional execution and at least one reachable else- if statement.
• Uses while-loops appropriately and exclusively for repetition. Loop condition describes all situations under which the loop will repeat and condition fails eventually.
• Conditions do not include tautologies. Pathways are not redundant. Every code block in every if/else/else if/while structure is reachable.
CJ7) Arrays
• Only standard Java arrays are used (e.g. does not use ArrayLists, etc.) • Uses multiple arrays to maintain records.
• At least one string array present.
• At least one non-string array present.
• Array lengths are determined at run-time (e.g. based on how many records the user wants to store).
• All array manipulation performed by student using while-loops, if-statements, etc. i.e. Must not use classes such as Arrays, etc. for array manipulation.
Justification Requirements
Note: You will not receive full marks allocated for the CJ requirements above unless each occurrence is justified as required below.
Type of code
Compare and justify your choice over other possible alternative…
Declarations
(also applies to method definitions)
Identifier names
Data types
Locality of declaration (why object-level vs. parameter-level vs. method-level vs. block-level, etc.).
Contents of code blocks
Formulations (is there a simpler way to meet requirements without creating this code block?) Inclusions (what you have added and why?)
Sequences (why are these in this order?)
Exclusions (what you haven’t added and why)
Conditions
Formations of the logic
Start-up code
In the most initial form, your code should take the following shape:
public class Assignment2RenameThisClass { private GTerm gtMain;
private GTerm gtSub;
public Assignment2RenameThisClass() { this.gtMain = new GTerm(600, 400); this.gtSub = new GTerm(400, 600);
}
// The main method must only perform the included operation. // Do not add any other code to the main method.
public static void main(String[] args) {
} }
Assignment2RenameThisClass a2obj = new Assignment2RenameThisClass();
You are encouraged to use the above and there is no need to give references to it.
Page 3 of 4
4.3) Documentation Requirements (4 marks):
Important note: Documentation must match with testable, functional and justified code to attract marks.
D1. Create an illustrated PDF user guide (one file). Show screenshots of sample inputs. Show screenshots of corresponding sample outputs. Include instructions on what the user can and cannot do (e.g. what they can and can’t input). Does not include any references to code as the guide is intended for a user who is not a programmer.
4. Submission
Via Canvas→Assignments→Assignment 2, submit all of the following in one go, every time you submit: 1. One .java file (see section 4.2)
2. All required images (see section 4.2.CJ5)
3. PDF documentation (see section 4.3)
It is the responsibility of the student to correctly submit their files. Please verify that your submission is correctly submitted by downloading what you have submitted to see if the files include the correct contents. It is not an issue if Canvas renames your submission.
After the due date, you will have 5 working days to submit your assignment as a late submission. Late submissions will incur a penalty of 10% per day. Submissions made after the late submission period will not be marked unless special consideration has been granted.
Assessment declaration:
When you submit work electronically, you agree to the assessment declaration: https://www.rmit.edu.au/students/student-essentials/assessment-and-exams/assessment/assessment-declaration
5. Academic integrity and plagiarism (standard warning)
Academic integrity is about honest presentation of your academic work. It means acknowledging the work of others while developing your own insights, knowledge and ideas. You should take extreme care that you have:
Acknowledged words, data, diagrams, models, frameworks and/or ideas of others you have quoted (i.e. directly copied), summarised, paraphrased, discussed or mentioned in your assessment through the appropriate referencing methods,
Provided a reference list of the publication details so your reader can locate the source if necessary. This includes material taken from Internet sites.
If you do not acknowledge the sources of your material, you may be accused of plagiarism because you have passed off the work and ideas of another person without appropriate referencing, as if they were your own.
RMIT University treats plagiarism as a very serious offence constituting misconduct. Plagiarism covers a variety of inappropriate behaviours, including:
Failure to properly document a source
Copyright material from the internet or databases
Collusion between students
For further information on our policies and procedures, please refer to https://www.rmit.edu.au/students/student- essentials/rights-and-responsibilities/academic-integrity
Page 4 of 4