Advanced/Further Programming
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
RMIT Classification: Trusted
Advanced/Further Programming
COSC1295/COSC2391
Assignment 1 Sem 2 2023: Social Media Analyzer
Assessment
Type
Individual assignment; no group work. Submit online via Canvas → Assignments → Assignment 1.
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 6, Friday August 25 11:59pm. Late submission penalty will be applied unless special
consideration has been granted.
There will be one milestone, demo check, during your prac class in Week 4. You will describe and
explain the key concepts adopted in your code and demonstrate code execution in the milestone.
Marks 16 marks out of 100 for assignment 1 submission.
4 marks (in addition to the 16 marks) out of 100 for milestone check.
Rubrics for final submission and for milestone check will be posted to Canvas.
NOTE: Carefully read this document. In addition, please regularly follow the Canvas assignment discussion board for
assignment related clarifications and discussions.
1. Overview
In this assignment, you are required to work individually to implement a basic Java console program that serves as a
social media analyzer. The program should allow users to analyze posts from social media platforms and calculate
statistics based on various criteria. You will practice your knowledge of Java basics, simple object-oriented (OO) concepts,
Java Collections Framework, exceptions, and unit testing. You will use Java SE 8 or later.
2. Task specification
The program keeps a collection of anonymous posts that are collected from social media platforms.
A list of collected social media posts is provided in posts.csv file (a csv file is a comma-separated
values file). The first row in posts.csv file contains headers, and the rest of the rows contain the
information of each post. Each row contains the following information of one post:
• ID: a unique ID (int) associated with each post
• content: the content of the social media post (String). For simplicity, you can assume that the
content does not contain any “,” symbol.
• author: an anonymous ID (String) of the post author
• likes: number of likes (non-negative integer) of the post
• shares: number of users (non-negative integer) that shared the post
• date-time: the date and the time that the post was first posted, in the format of
(DD/MM/YYYY HH:MM)
The console-based program provides the following functionalities for users:
• Add a post to the collection
• Remove a post from the collection based on the post ID
• Retrieve a post from the collection based on the post ID
• Retrieve the top N posts with the most likes, and show retrieved posts in descending order of #likes
• Retrieve the top N posts with the most shares, and show retrieved posts in descending order of #shares
Page 2 of 5
RMIT Classification: Trusted
3. Assessment details
In this assignment, you will incrementally build a basic Java program. The assignment is structured into 1 milestone with
video demo in week 4 and final submission in week 6.
Part A
You are required to implement the functions mentioned in the task specification in Section 1 - Overview. You can start
this part from week 1 and work on it until the due date.
• You will incorporate basic object-oriented concepts (e.g., abstraction and encapsulation). In particular, you will
define several classes to support the OO implementation. You will also need to choose appropriate data
structures to store relevant information. You MUST use Java Collections because the JCF structure is growable.
• The console output should be well-formatted (HINT: you can use System.out.printf method for
formatting).