CSC1035 “Programming Portfolio 2” / CSC1036 “Programming Portfolio” Coursework Part 1 This work is due for electronic submission thorough NESS. It represents an individual assignment (no group work) and can be carried out during independent study and during weekly practical classes. This is the first part of the module’s coursework, which constitutes 33% of the final module mark if you are taking CSC1035 or 50% if you are taking CSC1036. Clarifications and frequently asked questions about the coursework will be posted on canvas at https://ncl.instructure.com/courses/43687/pages/estate-agent-coursework-faq-and-clarifications 0. Before You Start Create a git repository in the university’s computing github organisation. The repository’s name must be in the following format: https://github.com/newcastleuniversity-computing/studentNumber_moduleCode_coursework1_2021 e.g. if your student number is 15999999 and you are taking the CSC1035 module, your repository must be at https://github.com/newcastleuniversity-computing/15999999_CSC1035_coursework1_2021 . 1. Objectives The objectives of this coursework are for you to demonstrate that you can: Define classes, fields, constructors, and methods in Java Use appropriate types, including collections Implement basic algorithms using collections Write a main method including console I/O Devise appropriate testing examples Document your solution with javadoc Note that at the time of setting the coursework, you will not have been taught all the material relevant to this exercise (for example, main method, console I/O, testing). You may need to research relevant Java Class libraries in order to get help with certain features. 2. Scenario: Estate Agent A reporting system is to be developed for a Newcastle estate agent company that wants to keep track of their sales and to gather statistics on how their branches are performing. House sales, referred to as Sales, will be recorded at a particular house number and postcode location and will record the value for which the house was sold. The city is divided into areas, which are each served by a different Branch. Each branch will collect data so that it can summarise by number of sales. Make use of correct version control practice for the development of this project. This includes: professional and relevant commits and commit messages, and a .gitignore file that excludes project configuration information. 3. Problem specification and mark scheme Define a Java class Sale with appropriate fields, methods and constructor to store and retrieve information about the house number, postcode, value, the month and the year in which the house was sold. Define a Java class Branch with appropriate fields, methods and constructor to store and retrieve the name of the local branch, and a list of sales that it has had. Include methods to return: The Sale with the highest value recorded by the branch . The average sale value recorded by the branch in a given year. A list of all sales recorded by the branch with a value greater than a given amount of money. Define a Java class Reporting, which holds information about all branches. Include methods to return: The branch with the largest average value sale for a given year. The largest value sale ever recorded. A list of all sales recorded with value greater than a given amount of money. Define a class ReportingIO, with a main method which does the following: Presents the user with a menu (printed to the console) of features: o enter Branch data; o enter Sale data; o provide reporting statistics on: branch with largest average value sale for a given year, highest sale ever reported, and all sales with value greater than a given amount; or o exit Takes user input from the console to choose one of the menu features Allows the user to input, via the console, the details of branches and sales After executing one of the features, returns the user to the menu to choose another option Make sure to include prompts that make it clear how the user is intended to use the program. All classes should be properly documented with javadoc and include appropriate testing examples. 4. What to submit You must submit 1 zip file to Ness, as follows: o A zip file named ‘CourseCode_coursework_pt1_2021_FirstnameLastname.zip’, where ‘CourseCode’ is CSC1035 or CSC1036 depending on which module you are taking, ‘Firstname’ is replaced with your first name, and ‘Lastname’ is replaced with your last name. The zip file must contain: The source code of your Java classes. The generated javadoc for your classes. A copy of your project’s .git directory. A PDF document named ‘CourseCode_coursework_pt1_2021_FirstnameLastname.pdf’ following the same conventions as above, containing a reflective commentary on your implementation (approximately 500 words), saying what went well and what you would do to improve or extend your program. This report should also talk about the use of version control throughout the development of the project. 5. Mark Scheme The coursework is marked out of 30 and accounts for 33% of the module mark for CSC1035 or 50% of the module mark for CSC1036. The breakdown of the marks is as follows: – Sale Class: 10% – Branch Class: 15% – Reporting Class: 20% – ReportingIO Class: 20% – Javadoc: 5% – Testing: 10% – Reflective report: 20% Your submission should be your own work and you should not share your code with other students or make it public. If you use code from resources available to you (e.g. online or the slides), you must provide a reference as a comment in your source code. Submissions will be checked for plagiarism.