Description
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.
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 Object Oriented (OO) Java applications. With this project you aim to demonstrate to potential employers or
clients how you can:
1. Demonstrate OO concepts as taught in class and create a small tool or utility program using (exclusively) a limited set of
fundamental code concepts (detailed in section 4.1 below) and,
2. You are able to analyse and evaluate in your code documentation (see requirements in section 4.2 below).
Note: You can turn your non-OO assignment 2 in to an OO oversion for this assignment, if you so prefer. As before, you must not just
“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 explain 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.
There are code requirements (8 marks) and documentation requirements (2 marks) for a total of 10 marks.
Develop this assignment in an iterative fashion (as opposed to completing it in one sitting). You can and should get started now as
there are concepts from the week 1 lessons that you can incorporate from now itself.
If there are questions, you must ask via the relevant Canvas discussion forums in a general manner (replicate your problem in a
different context in isolation before posting).
Page 1 of 5
,
2. Assessment Criteria
This assessment will determine your ability to:
1. Follow coding, convention and behavioral requirements provided in this document and in the lessons.
2. Independently solve a problem by using programming concepts taught over the first several weeks of the course.
3. Write and debug Java code independently.
4. Document code.
5. Ability to provide references where due.
6. Meeting deadlines.
7. Seeking clarification from your “supervisor” (instructor) when needed via discussion forums.
8. Create a program by recalling concepts taught in class, understanding and applying concepts relevant to solution, analysing
components of the problem, evaluating different approaches.
3. 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.
4. Assessment details
Note: Please ensure that you have read sections 1-3 of this document before going further.
Your code must meet the following code requirements (section 4.1) and documentation requirements (section 4.2).
In places where this specification may not tell you how exactly you should implement a certain feature, the programmer (you) need
to use your judgment to choose and apply the most appropriate concepts from class materials. Follow answers given by your “client”
or “supervisor” (you instructor) under Canvas→Discussions→’Assignment 3’ when in doubt.
4.1) The following code requirements/concepts must be applied to demonstrate your knowledge of standard lesson materials
and approaches; must refer to corresponding rows in the rubric (section 9) for full details. [2+1+1+1+2+1=8 marks]
C1) Multi-class object oriented relationships and code format.
C2) Object member variables.
C3) Constructors.
C4) Accessors, mutators and other methods.
C5) File reading and/or writing.
C6) Conditional execution and repetition.
4.2) Documentation requirements. Must refer to corresponding rows in the rubric (section 9). [1.5+0.5=2 marks]
D1. The code comments in this assignment must focus more on the analysis of your approaches and their evaluation instead of
simply translating the Java code to English (see rubric in section 9 of this document; examples will also be given in lessons).
Write comments before code blocks (e.g. before methods, loops, ifs, etc. where you can have { }) and important variable
declarations.
D2. Explain any code requirements that you have not met and all bugs (situations that might cause the program to crash or
behave abnormally) in the approximate locations they originate within your code. Bugs imposed by limitations in the lesson
topics such as input type mismatches need not be corrected in code but they still must be documented, if they exist. If you do
not have bugs, you must explicitly say that there are none. Tip: A good programmer knows the limits of their program. If doing
B2, explain any standard code requirements that you may have violated due to the bonus requirements.
Page 2 of 5
,
4.3) Bonus requirements
You can attempt either B1, B2 or both but to obtain any bonus marks, you must meet all requirements of the nonbonus/standard requirements. The total mark for assignments+weekly work (the non-exam component) is capped at 50 marks;
the exam will be 50 marks. For a full break-down, see Canvas→Home→Syllabus.
B1. Submit your final version of the assignment, 1 week before the deadline for +0.5 bonus marks or 2 weeks before the
deadline for +1 bonus marks or 3 weeks before the deadline for +1.5 bonus marks.
B2. Incorporation of algorithms (+1.5 bonus marks) – At least 2 working days before the deadline, write an email using your
official RMIT email address to Gayan, pitching an idea of how you will incorporate an algorithm or algorithms from the
approved list of algorithms (see end of this document) to your program. You must be detailed in your description of why this
algorithm is relevant to your program and give a rough explanation of how you will incorporate it. If approved, submit a copy
of your program via email (Canvas inbox not accepted) to Gayan, in addition to submitting via Canvas. If you choose to
incorporate this bonus functionality, your bonus version should be the only version that you must submit. Please do not
include multiple versions of your code in the Canvas final submission.
5. Referencing guidelines
What: This is an individual assignment and all submitted contents must be your own. If you have used sources of information other
than the contents directly under Canvas→Modules, you must give acknowledge the sources and give references using IEEE style.
Where: Add a code comment near the work to be referenced and include the reference in the IEEE style.
How: To generate a valid IEEE style reference, please use the citethisforme tool if unfamiliar with this style. Add the detailed
reference before any relevant code (within code comments).
6. Submission format
Submit just the relevant .java files and any required .csv/.txt data files via Canvas→Assignments→Assignment 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.
7. 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 the University website.
8. Assessment declaration
When you submit work electronically, you agree to the assessment declaration.
Page 3 of 5
,
9. Rubric/assessment criteria for marking
Code must be valid, runnable Java to be given a mark (non-compilable code such as JavaScript, pseudocode, incomplete Java code cannot be marked). Run-time errors will incur up to a 50% penalty
(run-time errors due to data type mismatches in inputs are acceptable).
Inadequate Partial Complete (Uses only the concepts covered in class materials for meeting stated criteria)
C1 More than one one of the criteria in the
‘complete’ level missing or incorrect or does
serve overall functional aims of program.
No more than one of the criteria in the ‘complete’ level
missing/incomplete/incorrect but demonstrated as a
part of meeting overall functional aims of program.
Has multiple classes with one class per .java file. All identifiers and names are appropriate to their purpose (no names like
Assignment3.java).
Follow conventions shown in Tutorial 8 lesson, other standard class materials and common ones in the Java API.
The classes must be in 0-to-many or 1-to-many composition (“has-a”) relationships between each other using object member arrays of class
types created by student. The sizes of these arrays are determined at run-time and they must be manipulated exclusively using while loops.
Only one of the classes (the “application” class) must have the main method and the main method should have only one line to create an
object of the main application class (as shown in Tutorial 8 lesson). All other methods must be explicitly public and not static.
Avoids hard-coding when appropriate. Formatting is consistent. Only relevant code and comments included. All code reachable. Does not
use break, continue, System.exit or similar branching anywhere in the code. Every method has one return statement as the final statement
of the method (to avoid spaghetti code and to demonstrate understanding of the return statement).
C2 More than one one of the criteria in the
‘complete’ level missing or incorrect or does
serve overall functional aims of program.
No more than one of the criteria in the ‘complete’ level
missing/incomplete/incorrect but demonstrated as a
part of meeting overall functional aims of program.
All classes have object member variables (including arrays) that are explicitly private and non-static. Demonstrates understanding of
primitive data types vs. class types where relevant. There are no = (equals) signs where member variables are declared. Whenever a method
refers to a member variable, it uses this. (i.e. “this dot”, e.g. this.name).
C3 More than one one of the criteria in the
‘complete’ level missing or incorrect or does
serve overall functional aims of program.
No more than one of the criteria in the ‘complete’ level
missing/incomplete/incorrect but demonstrated as a
part of meeting overall functional aims of program.
Every class has one constructor. Each constructor must have parameters that take minimum information required for creating an object of
that class. All member variables, arrays, etc. are explicitly initialised in the constructors.
C4 More than one one of the criteria in the
‘complete’ level missing or incorrect or does
serve overall functional aims of program.
No more than one of the criteria in the ‘complete’ level
missing/incomplete/incorrect but demonstrated as a
part of meeting overall functional aims of program.
One or more classes have get methods (accessors with return values). One or more classes has set methods (mutators with parameters).
There are also other methods that perform actions relevant to the classes that contain them in order to reduce repetition of code. All
methods are explicitly public and non-static.
C5 More than one one of the criteria in the
‘complete’ level missing or incorrect or does
serve overall functional aims of program.
No more than one of the criteria in the ‘complete’ level
missing/incomplete/incorrect but demonstrated as a
part of meeting overall functional aims of program.
Uses only BufferedReader+FileReader when reading. BufferedWriter+FileWriter when writing. Follows concepts shown in Tutorial 10 lesson.
Uses only .txt or .csv files and these are placed in the default/current folder (paths do not contain folder/directory names).
C6 More than one one of the criteria in the
‘complete’ level missing or incorrect or does
serve overall functional aims of program.
No more than one of the criteria in the ‘complete’ level
missing/incomplete/incorrect but demonstrated as a
part of meeting overall functional aims of program.
Uses if/else/else if appropriately and exlusively for non-repeating conditional execution. Contains at least one reachable else if statement.
Uses while loops appropriately and exlusively 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.
Does not use break, continue, System.exit or return within if/else/else if/while statements.
D1 Lacks one or more of the ‘partial’ level
criteria
OR
documentation not within .java file.
Identifies concepts required and application of each
concept is discussed with respect to the overall aims of
the program.
Has an even spread of the above near code blocks and
important variables in plain English where possible.
Further to ‘partial’ level criteria…
Analyses the breaking down of the programming task to smaller parts (e.g. methods and other blocks) and organisation to achieve the
overall goals of the program.
Evaluates strategies used to meet requirements and compares the quality of one approach to another approach. Has an even spread of the
above near code blocks and important variables in plain English possible.
D2 Does not discuss potential issues in the code
OR documentation not within .java file.
Identification (without discussion) of the criteria stated
under ‘complete’ or discussions exclude some of the
criteria under ‘complete’.
Explains any code requirements that have not been met, situations that might cause the program to crash or behave abnormally. Able to
identify the approximate locations of any issues within the code and comments are given in those locations. Bugs imposed by limitations in
the lesson topics discussed.
Page 4 of 5
,
10. List of Approved Topics for Bonus Option B2
1 Automated planning
2 Combinatorial algorithms
2.1 General combinatorial algorithms
2.2 Graph algorithms
2.2.1 Graph drawing
2.2.2 Network theory
2.2.3 Routing for graphs
2.2.4 Graph search
2.2.5 Subgraphs
2.3 Sequence algorithms
2.3.1 Approximate sequence matching
2.3.2 Selection algorithms
2.3.3 Sequence search
2.3.4 Sequence merging
2.3.5 Sequence permutations
2.3.6 Sequence alignment
2.3.7 Sequence sorting
2.3.8 Subsequences
2.3.9 Substrings
3 Computational mathematics
3.1 Abstract algebra
3.2 Computer algebra
3.3 Geometry
3.4 Number theoretic algorithms
3.5 Numerical algorithms
3.5.1 Differential equation solving
3.5.2Elementary and special functions
3.5.3 Geometric
3.5.4Interpolation and extrapolation
3.5.5 Linear algebra
3.5.6 Monte Carlo
3.5.7 Numerical integration
3.5.8 Root finding
3.6 Optimization algorithms
4 Computational science
4.1 Astronomy
4.2 Bioinformatics
4.3 Geoscience
4.4 Linguistics
4.5 Medicine
4.6 Physics
4.7 Statistics
5 Computer science
5.1 Computer architecture
5.2 Computer graphics
5.3 Cryptography
5.4 Digital logic
5.5 M L and statistical classification
5.6 Programming language theory
5.6.1 Parsing
5.7 Quantum algorithms
5.8Theory of computation and automata
6 Information theory and signal
processing
6.1 Coding theory
6.1.1 Error detection and correction
6.1.2Lossless compression algorithms
6.1.3Lossy compression algorithms
6.2 Digital signal processing
6.2.1 Image processing
7 Software engineering
8 Database algorithms
9Distributed systems algorithms
9.1 Memory allocation and deallocation
algorithms
10 Networking
11Operating systems algorithms
11.1 Process synchronization
11.2 Scheduling
11.3 I/O scheduling
11.3.1 Disk scheduling
Page 5 of 5