RMIT Classification: Trusted
Further Programming
COSC2391
Assignment 2: Graphic Design Application
Assessment
Type
Individual assignment; no group work. Submit online via Canvas → Assignments → Assignment 2.
Marks are awarded for meeting requirements as closely as possible according to assignment
specifications and the supplied rubric. Clarifications or updates may be made via announcements.
Due Date Week 13, Sunday 4 June 11:59pm. Late submission penalty will be applied unless special consideration
has been granted.
There will be 2 milestones: week 12 in-lab milestone check and week 14 post submission final
interview. You will describe the key concepts adopted in your code, demonstrate code execution, and
explain your code at the milestones.
Marks 45 marks out of 100 for assignment 2
5 marks for week 12 in-lab milestone check in addition to 45 marks.
1. Overview
NOTE: Carefully read this document. In addition, regularly follow the Canvas assignment discussion board for assignment
related clarifications and discussion.
In this assignment, you are required to work individually to develop a Graphic Design Application, named MyTimeTable,
which allows students to manage courses. Building on your work in Assignment 1, you will practice your knowledge of
object-oriented design principles, design patterns, Java Collections Framework, generics, exceptions, graphical user
interfaces, serialization and deserialization, and unit testing. You will use Java SE 8 or later and JavaFX.
Task specification
Basic functional requirements are listed below (mandatory).
• The application can have many users.
• Each user can create a profile, with a unique username, password, the first name, the last name, and the student
number.
• Once the username and password are created, the user can log in.
• Each user has a dashboard after login. The board should display a user’s student number, first name, and last
name.
• Each user can perform the following actions:
o Edit the profile (i.e., change the first name, the last name, or the password). Student number must not
be editable.
o View all courses. The list of all courses offered is provided in course.csv file. The program should show
all available courses (i.e., courses that still have capacity for extra enrollments) and courses that are
full, where there are clear indicators about which courses are full and which courses are still open for
enrollments.
o Search for a course. A user should be able to search for a course and look up the information of that
course.
o Enroll into a course. The program should be able to detect duplicated enrollments (i.e., a student cannot
enroll into the same course twice), and detect class clashes (i.e., a student cannot enroll into a course
that clashes with another course that he/she has already enrolled into.)
o Withdraw from a course.
Page 2 of 4
RMIT Classification: Trusted
o View all enrolled courses in list view (a list of all enrolled courses) and timetable view (a timetable of all
enrolled courses).
o Export the list of enrolled courses to a file.
o Log out
• Each course from the couse.csv has the information of Course name, Capacity, Year, Deliver mode, Day of
lecture, Time of lecture, and Duration of lecture.
o For each course, the number of total enrollments should not exceed the maximum capacity. For online
courses, the capacity is specified as “N/A”, and therefore, there is no limit on the number of total
enrollments.
o You can assume all courses run from beginning of March until end of May, for simplicity.
• The profile data should persist between logins for the same user.
• You will get a bonus (4 marks) if you provide the following functionalities for each user:
o Change the font size, font type (e.g., Calibri), text color, and font style (i.e., bold, italic). Note that bonus
marks will be awarded given the coverage of texts, of which the fonts can be changed.
• You will get a bonus (1 mark) if you store users’ passwords through hashing: a password is hashed and stored
as the hash value in the database rather than a plaintext.
• The bonus marks will be added to compensate any marks that you have lost elsewhere.
Disclaimer: the specification in this assignment is intended to represent a simplified version of a system in real life and
thus is not meant to be a 100% accurate simulation of any real system or service that is being used commercially.
4. Assessment details
In this assignment, you will incrementally build a graphic design application, named MyTimeTable. The assignment is
structured into 2 milestones which must be demonstrated to your lab tutor.
Part A (mandatory)
You are required to work on the backend part of the application (excluding data storage, which will be covered in Part C)
regarding the basic functions mentioned in the task specification in Section 1 - Overview. You can start this part from
week 7 and work on it until the due date.
• You will incorporate object-oriented concepts to design and implement classes (including abstraction,
encapsulation, inheritance, and polymorphism).
• You will need to choose appropriate data structures to store relevant information.
• You will need to document the code properly by following Code Conventions for the Java Programming Language
by Oracle: https://www.oracle.com/java/technologies/javase/codeconventions-introduction.html
Part B (mandatory)
You are required to work on the frontend part of the application and connect the frontend with the backend regarding
the basic functions mentioned in the task specification in Section 1 - Overview. You can start this part from week 7 and
work on it until the due date.
• You MUST use JavaFX.
• Your program should include appropriate JavaFX components to make the application easy-to-navigate. For
example, each window should have a window title; menu options (if applicable) are selected from a menu bar.
• Your program should respond clearly to every user action. For example, if the user types a wrong password, the
login window should display a clear error message and ask the user to type again.
• Your program should provide a visual consistency. Avoid using different styles and labels for similar elements on
different windows of the application.
• You are required to follow MVC design pattern to connect the frontend with the backend.
• The UI design of your program should serve the purpose of the application.
Part C (mandatory)
Page 3 of 4
RMIT Classification: Trusted
You can start this part from week 9 and work on it until the due date.
• Your program should save the user profile data and allow the application to be restarted in the same state it was
in at the end of the previous execution. You must store the data in a database (using JDBC) when the application
closes and restore the data when the application starts again.
Part D (optional)
You may optionally implement the advanced functions mentioned in the task specification in Section 1 - Overview. The
completion of part D will provide bonus marks (i.e., 5 marks) which can be used to compensate the marks that you have
lost elsewhere. You can start this part from week 7 if you are planning to obtain some bonus marks.
6. 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/studentessentials/rights-and-responsibilities/academic-integrity
7. Marking Guidelines
• GUI (10/45)
• Functionality (20/45)
• Object oriented design and choice of data structures (10/45)
• Source code quality (5/45)
• Milestone check week 12 (5/5)
GUI: The application is easy-to-navigate and consistent and responds clearly to every user action. Note marks for GUI
are checked during the post-submission interview. If you do not attend the final interview, you will be awarded ZERO
mark for GUI.
Functionality: All basic functions required by specification are implemented correctly covering different cases that might
happen during the usage of the program. Note marks for Functionality are checked during the post-submission
interview. If you do not attend the final interview, you will be awarded ZERO mark for Functionality.
Object oriented design and choice of data structures: Appropriate choice of data structures that serves the purpose of
the application. Class designs that adhere to the SOLID principles.
Source code quality: Adequately documented and properly indented code; appropriate class/method/variable names.
Milestone checks:
Page 4 of 4
RMIT Classification: Trusted
• In-lab milestone check in week 12 (5 marks): Clearly explain how the code follows MVC; complete required
functions and demo via code execution, including user login and sign-up, change of user profile.