Assessment Brief_8a69df06b39bbc713bc7c604b87b60df
Assessment Brief_8a69df06b39bbc713bc7c604b87b60df
Assessment Brief_8a69df06b39bbc713bc7c604b87b60df
CMP020N201
Lecturer: Dr Lisa Haskel, Dr Touseef Tahir
Coursework specification
PREPARATION
Before you begin this coursework, it is important to plan your activities and to manage the delivery of your milestones
in the context of the submission deadline. Therefore, you are strongly advised to READ THIS COURSEWORK
DOCUMENT CAREFULLY!
ACADEMIC MISCONDUCT
Your submission for this coursework will be scrutinized for plagiarism, collusion, and other forms of academic
misconduct. Please ensure that the work that you submit is your own, and that you have cited and referenced
appropriately, to avoid having to attend an academic misconduct hearing. You can find more information about
academic integrity and how to mitigate plagiarism here: https://roehampton.libwizard.com/f/academic_integrity
Overview
The coursework should be delivered in 3 ‘sprints’. In each sprint, you will add new functionality
and improve your code using the knowledge you will gain as the module progresses.
Planning and documentation are as important as working code. We are looking for a professional
approach in which you consider readability, maintainability and conformance to standards as well as
correct operation. You will supply detailed documentation as well as code.
Please note that this is an individual piece of work. You will be asked to present your work in
person to a lecturer and answer questions about your solution. There will be one formative
assessment (not marked – to help you stay on track) and two summative assessments. Sprint 2 will
be marked in code reviews in class. You can only be marked for your sprint 2 if you have attended a
formative assessment meeting.
Task
Please choose one of these projects to develop in your coursework. You should choose one project
and stick to it throughout the module, fulfilling each of the sprint requirements in the context of
your chosen project. Think carefully about which topic interests you most as you will work on it
throughout the term.
Your overall aim is to produce well architected OOP code that shows an understanding of the
problem domain, created using standard OOP technique, and properly documented both within the
code and in accompanying design documents. For each sprint there will be well defined basic
requirements that must be met to achieve a pass, and advanced features that you can implement if
you are aiming for higher marks.
We expect your code to conform to established coding standards as detailed here:
https://google.github.io/styleguide/javaguide.html
Projects
SpareB&B
Users can book different kinds of accommodation. You can make any kind of accommodation
available, for example flats, hotels, luxury villas, sofas. Your accommodations may have different
facilities such as kitchens or washing machines.
ZipAbout
Users can rent shared lightweight electric transport vehicles – bikes, scooters, skateboards,
segway’s and other vehicles, perhaps yet to be invented. For some vehicles, users will need
equipment such as helmets, kneepads or gloves to use them.
LibraryOfStuff
Users can borrow all kinds of items - tools, sewing machines, phone chargers, bicycle pumps – little
things we often need but can’t lay our hands on. Items can be categorised by the part of the home in
which they are usually used: kitchen, garden, workshop, or ‘out and about’.
Consider the objects that can be booked, rented or borrowed in your application. Identify
their methods and properties.
Use the OOP principles of Abstraction, Encapsulation, Inheritance and Polymorphism to
design your classes
Create a class diagram showing the relationships between your classes.
Write well documented java code to implement your classes.
Minimum requirements should be:
◦ a constructor
◦ some properties
◦ a print() method which gives some user-friendly output.
Provide a Main class and main method which you can run in the console in which:
◦ At least 3 objects of different types are created in your code
◦ A user-friendly listing of the objects can be printed to the console
For those aiming for higher marks, also consider the additional information eg. Facilities,
equipment, hobbies. Consider how composition can be used to model these in your system.
Add them to your class diagram and code.
Please hand in your work in Moodle and seek feedback during the week 5 and 6 lab sessions.
Sprint 2: Booking functionality
Deadline: 25 November 2024
Code reviews:
Week 9 will be used for code reviews as per schedule below and your seminar slot is merged
with lab slot. It will be a 4-hour evaluation slot in the lab.
All students must be present in the lab at 10 AM for the evaluation as per their timetable. This
will ensure a smooth flow and allow the evaluations to stay on track.
50% of marks
Implement a booking system for your chosen project in Java. You do not need to implement
booking for specific dates or durations, but it should be possible for a user to book and release
items. Once an item is booked, it should not be available for booking by any other user.
NOTE: You do not have to capture any user input at this stage of development
Basic requirements
Your design incorporates the additional information e.g. Facilities, equipment, hobbies
for bookable items
Include at least one design pattern, accompanied by a short explanation of how it has been
implemented, and/or
Devise a feature of your own choice that demonstrates your deeper understanding of design
patterns. Perhaps by rewarding your application users in some way with loyalty points or a
random prize draw or perhaps by adding features to your application such as managing
cleaning or maintenance or providing output in different formats (these are just examples).
Sprint 2
Basic requirements (3rd – 2.2)
Association/aggregation used
Design patterns used
Additional features implemented
Excellent coding standards and documentation
Sprint 3 - GUI development
Deadline 6 January 2025
50% of marks
Basic requirements
Documentation/report
Provide a schematic ‘wireframe’ that provided the specification for your GUI
Provide a set of user stories and class diagrams that document the provided functionality
Provide screenshots of your finished application
Write a conclusion to your report in which you identify the programming paradigms that
you have used to create your application eg. Object Orientated, declarative, functional, and
describe why each is suitable for different tasks.
Code
Implement basic button and list functionalities taught in class with some original design and
formatting.
Use the classes you have created in sprint 2 to create some basic functionality where you list
bookable items.
Advanced requirements
Use the classes you have created in sprint 2, including your design patterns, to implement
the listing and selection of items, and feedback to the user. You may implement additional
features of your choice.
Use Java streams to implement at least one part of your application
Ensure that these additional requirements are covered in your documentation
Sprint 3