1.1 Assessment items
ASSESSMENT TASK 1: CODING ASSIGNMENT
Aligned subject learning outcomes • design and implement a large and/or complex software program from supplied specifications
• continue the development of problem-solving skills and approaches that effectively support programming
Group or individual Individual assessment task
Due date Due 5pm, 13th Jan (Week 9)
ASSESSMENT TASK 1: DESCRIPTION
The Australian Bureau of Meteorology (BOM) provides a range of climate information about different parts of Australia. In particular, the Climate Data Online service provides access to rainfall data for many different Australian cities and suburbs. For example, Copperlode Dam station has been recording rainfall data since the year 2000.
Version-1 of your assignment (let’s call it the alpha-release of your software!): Your coding challenge is to create an IntelliJ IDEA Java project that contains the following Java classes designed and coded by you:
1. RainfallAnalyser: (use static Java methods only)
a. Read BOM rainfall data for 10+ years from csv text files (will be provided to you). NOTE!!! You are encouraged to search for (and use) java libraries to help you with any step in this assignment. For example, a class or package to read csv files in java.
b. Calculate monthly rainfall totals along with minimum daily and maximum daily rainfall during each month, across the 10+ years’ worth of data
c. Save the calculated information into a new text file
2. RainfallVisualiser: (add draw code to a JavaFX Application class that will be provided)
a. Read the calculated information from those new text files generated by RainfallAnalyser
b. Display a graphical chart using JavaFX shapes that effectively presents the calculated information
Your RainfallAnalyser class will be expected to handle situations such as corrupted text files and some other related IO issues. This could be done with JUnit (optional!). There is no need to provide JUnit tests for your RainfallVisualiser class.
Version-2 of your assignment (let’s call it the beta-release of your software!): Collect your code into a package (this will be your software API). Your rainfall package is expected to contain a few related classes for the purpose of processing multiple rainfall data files. For example, your new API should be able to read multiple data files for various locations such as Copperlode Dam station (2000-2020), Kuranda Railway station (1898-2020), and Tinaroo Falls station (1954-2020). You may base the package on the code you develop for RainfallAnalyser – but it is likely that you will need to use new coding structures! The precise design of the classes in rainfall is up to you; however, it must include welldesigned and implemented Java classes that:
• Load rainfall data from the rainfall data files into memory (one class is probably enough);
• Process and hold that data in memory using appropriate OOP “helper” classes (perhaps 2 classes are enough?). You are expected to apply the principles of “code correctness” and “code robustness” to ensure the stability of your rainfall package. Hence, your rainfall package is expected to include a small number of custom exception classes for when some error causes an API class to fail for some reason that directly relates to dealing with the rainfall data.
The beta version of RainfallVisualiser is expected to use various aspects of JavaFX to create an interactive user interface for selecting which rainfall data files to use and for presenting graphical and textual information about the rainfall data found in those files. For example, the user will be able to click on the graphical chart and get specific information about rainfall during a particular month within the dataset. The specific GUI design details necessary to complete this revised program will be released during semester.
ASSESSMENT TASK 1: SUBMISSION DETAILS
Submit your work using the Assignment submission link within the CP2406 LearnJCU site for this subject. Your submission must include:
• Report: pdf or word document showing screen shots of your program running (free formatted document with your student id and name). One screenshot for each completed requirement item accompanied by short description. Use this document to illustrate/demonstrate all testing (manual, or optionally automated via junit) you have implemented and executed for your software.
• Optional video (screencast) of your software running as per requirements and matching your report. NOTE! If you do not submit the video, you must demonstrate that your running software matches your submitted report during practicals or online consultations.
• A zip of your IntelliJ project folder.
ASSESSMENT TASK 1: CRITERIA SHEET
This task assesses your ability to apply coding skills such as the use of:
• Basic Java classes and objects;
• Java variables and primitive types;
• JavaFX shape drawing code used inside JavaFX program (template starter code will be provided); • Java control flow structures;
• Basic Java file IO and exception handling; and
• Basic algorithmic development: top-down design and incremental development.
• Object-oriented design and programming - encapsulation, inheritance, polymorphism, interfaces;
• JavaFX - basic layouts, various UI controls, event handling;
• Correctness and robustness - pre/post conditions, assertions, annotations, custom exceptions;
• Data structures – perhaps arrays, or linked lists, or stacks, or queues; • Instance methods with appropriate parameters and return types; and
• Classes with appropriate access control.
100 marks) Exemplary 9-10 Good
7-8 Satisfactory 5-6 Limite d 2-4 Very Limited
Alpha release completeness (worth 3 times. max
30) Outstanding progress is made on the code implementation. All aspects of the required classes are successfully implemented and fulfil the required program behaviours. Exhibits aspects of
exempla ry (left) and
(right) Reasonable progress is made. Some classes have been implemented and fulfil some of the required program behaviours Exhibits aspects of
ory (left) and very limited
(right) Not enough progress is made.
Beta release completeness (worth 3 times. max
30) See above See above Not enough progress is made.
Code testing (max 10) Based on your submitted report and matching video (or in-class demonstration). Complete manual or automated testing coverage of your software. Good testing coverage. Not enough tests.
readability (max 10) Java coding standards are very consistently followed throughout the Java codebase. This includes Java naming conventions and descriptive comments. Java coding standards are mostly followed except in some parts of the Java codebase. Too much of the codebase does not following Java coding standards.
Coding practices (worth double, max
20) The coding practices covered in the first part of the subject are utilised very effectively. The choice and construction of Java variables, methods, control flow and file handling are outstanding. Coding practices are utilised, however there are some exceptions. The choice and construction of Java variables, methods, control flow and file handling are reasonable. Coding practices are not utilised well enough.