ITECH2000 Mobile Development Fundamentals

ITECH2000 Mobile Development Fundamentals.

Page 1 of 6
ITECH2000 Mobile Development Fundamentals
Assessment Task 3 – AppInventor App (Reddit Browser)
You will implement in AppInventor a multi-screen app, based on a given project specification. This app
will use a range of components taught up to and including Week 11 of the course. You will also submit
a brief report containing pseudocode and a description of how your solution utilises various concepts
learned in class.
Timelines and Expectations
Percentage value of task: 20% (of final course mark)
Due date: 11:59pm, Sunday 11th October 2020 (Week 11) – after this date, you will receive a penalty
Cut-off date: 11:59pm, Sunday 18th October 2020 – after this date work will not be accepted
Minimum time expectation: 15 hours
Maximum time expectation: 30 hours – Most students should not require this much time.
Learning Outcomes Assessed
The following course learning outcomes are assessed by completing this assessment.
K1. Understand constructs typical of many programming languages such as: variables, expressions,
assignment, sequence, selection, iteration, procedures, parameters, return values.
A1. Design, develop, test and debug mobile apps from a given textual program specification.
S1. Analyse the input, processing and output needs of small programming problems.
S2. Design code sequences to realise algorithms in a programming language.
S3. Design basic user interfaces and develop storyboards to convey designed interaction sequences.
S5. Develop test cases to ensure correct behaviour.
Assessment Details
This assignment contains two parts: an app and a brief report.
1. App Details
Your assignment is to develop an Android application, using MIT AppInventor, which will store a list of
interesting “subreddits” from the popular social website Reddit (, and download the
current top posts from those “subreddits” for viewing. If you are not familiar with the Reddit platform,
you can read more about it here: As your application will only be
reading information from the Reddit API (and not posting any information), you will not be required to
register your own account on Reddit for this assignment.
The application should contain a number of screens, which are described in the following sections.
Note: Your app does not need to look identical to the provided screenshots. As long as you fulfil the
requirements in a logical way that follows what you have learned this semester, you have free reign to
design your interfaces as you like.
CRICOS Provider No. 00103D | RTO Code 4909
CRICOS Provider No. 00103D | RTO Code 4909 Page 2 of 6
Screen 1: Subreddit List
When the application is first opened, a screen should be displayed which contains a list of “subreddits”
that the user has previously added, as well as a “Add New Subreddit” button. When clicked, this
should open Screen 2, where the user inputs a subreddit name that is returned back to this screen and
added to the list of “subreddits” (if it’s not a duplicate that is already in the list).
Once the user has added a subreddit, it should be displayed in the list of subreddits. The list of
subreddits should be persisted using a TinyDB so that it can be reloaded after the user closes and
reopens the app or returns to this screen from another screen. As an added feature, the list of
subreddits should always display in alphabetical order using a sorting algorithm (see Week 10
When the user clicks on a subreddit from the list, they should be presented with two options:
1. View Posts: If selected, then Screen 3 should be loaded with this subreddit being passed to it
as a start value. Screen 3 will load the most recent posts from this subreddit (if it’s valid).
2. Delete Subreddit: If selected, then this subreddit should be removed from the list and no
longer persisted in the TinyDB.
Screen 2: Add Subreddit Screen
This screen should allow the user to enter a subreddit name and choose to save it.
If the user enters a subreddit name (it doesn’t have to be valid) and chooses to save it, it should return
the subreddit name back to Screen 1 to be persisted. This screen should include validation so that the
user can’t save an empty subreddit name.
If the users decides not to add a subreddit, they should be able to cancel and return back to Screen 1
without making any changes to the list of subreddits.
Screen 3: View Posts Screen
After a user selects to view the posts for a subreddit from Screen 1, this screen should be loaded. The
name of the subreddit that is being viewed should be displayed on this screen, as well as a list of the
titles of the most recent posts from this subreddit. See the instructions below for guidance on
downloading the posts. If the subreddit doesn’t exist, or there is no network connection, an appropriate
error should be displayed to the user.
When a post title is clicked, its associated URL should be passed to Screen 4 which will load and
display the website.
Downloading posts from Reddit using an API
We are going to use the Pushshift Reddit API to download the most recent posts for a subreddit. You
can get the most recent posts for a subreddit in JSON format using the following URL – all you need to
do is replace <subreddit_name> with an actual subreddit’s name as required:<subreddit_name>&limit=5
CRICOS Provider No. 00103D | RTO Code 4909 Page 3 of 6
For example, will give us
the five most recent posts from the Android subreddit. Note that the limit parameter is optional, but to
keep things simple I recommend loading only a small number of posts to start with.
If you visit the link and view the JSON in a web browser, you will see that the JSON contains an array
(data) of posts, with each post containing a range of information that describes the post. For the
purposes of this assignment, we are only interested in the title and the url values for each post, so
your app should extract these and load into an appropriate data structure to achieve the functionality
required for this screen.
On the other hand, if you provide a subreddit to the API that doesn’t exist (try typing in some
gibberish), you will see that the API returns an empty array of posts. This will help you to determine
whether a subreddit is valid or not for the purpose of displaying an error to the user.
Screen 4: View URL Screen
After the user selects an individual post to view on Screen 3, this screen receives the post’s URL and
loads it in a WebViewer component. Using relevant event blocks, the user should be shown a loading
message while the website URL is loading, which should disappear once the site has completed
loading. This screen should also provide the user with a mechanism to return to the previous screen
(Screen 3) to select another post to view from the current subreddit.
General Requirements for Coding
While your app should meet the functionality described above, you need to ensure that you
demonstrate the concepts we have covered in ITECH2000 so far. To achieve full marks you will need
to ensure that you have correctly made use of each of the following components, constructs or
concepts somewhere in your app:
• Dictionary
• WebViewer
• Web component
• ListView or ListPicker
• TinyDB
• Local and global variables
You should follow best practices for coding that we have described this semester, including the use of
procedures to promote code reuse. Make sure you thoroughly test your application to ensure that it is
Please read through all of the requirements before you commence work on the app, so you get
a full sense of what is required to be done. It is recommended that you first model any events
using pseudocode before commencing programming.
3. Brief Report
As well as completing the program described above in AppInventor, you are also required to submit a
brief report that includes the following:
• A title page that includes your name and student ID number.
• Pseudocode describing the behaviour of two (2) events that your app will respond to. Ensure
that you clearly label your pseudocode so that it is clear what aspect you are modelling.
CRICOS Provider No. 00103D | RTO Code 4909 Page 4 of 6
• For each of the design components/blocks listed in the previous section (General
Requirements for Coding), you should describe in 2-3 sentences how you used this
component in your solution and justify why. If you have used a component multiple times,
please describe one example.
• A description of how you tested your application to ensure that it functioned correctly, with
respect to user inputs, outputs, and networking.
Getting Assistance and Clarification
If any part of the task is unclear to you, or you are not quite sure how to do some aspect of the task,
you should either contact your lecturer directly (via email, or in person while you are in class), or else
post a question to the Discussion Forum on Moodle. However, any questions posted to the forum on
Moodle should not include anything that you plan to submit (such as screenshots of code you might
want to submit).
Plagiarism is the presentation of the expressed thought or work of another person as though it is one’s
own without properly acknowledging that person. You must not allow other students to copy your work
and must take care to safeguard against this happening. More information about the plagiarism policy
and procedure for the university can be found at
You must export your AppInventor project for submission. To do this, go to the “Projects” menu, and
select “Export selected project (.aia) to my computer”. Rename the .aia file to include both your name
and student ID number. App files submitted in any other format than .aia (e.g. apk) will not be
accepted and you will receive zero marks.
You should also save your brief report as a PDF including both your name and student ID in the file
Upload these files to Moodle through the assignment link labelled “Submit Assignment 2”. This link will
only become available after you have completed the “Declaration of Originality” form for the
assignment, which requires you to accept the Student’s Statement. It is a legal declaration that the
work was done by you, without any part of it being done by someone else.
You can expect to receive your final mark and feedback comments within 2 weeks of the due date or
the date which you submitted your work – whichever is later. You may be required to attend an
interview with the marker to answer questions about your work; if this is the case, your mark will be
withheld until you have attended.
Continue to the next page for the Marking Criteria/Rubric
CRICOS Provider No. 00103D | RTO Code 4909 Page 5 of 6
Marking Criteria/Rubric
Student Name: ______________________ Student ID: ______________________

Requirement Marks Awarded
Screen 1: Subreddit List Screen
Input/output elements included on this screen appropriate for requirements
List of subreddits loaded from TinyDB when the screen is initialised
Functionality provided for the user to open Screen 2
Subreddit retrieved from Screen 2 and added to list/TinyDB if not duplicate
Functionality to navigate to Screen 3 implemented correctly
Functionality to delete a subreddit from the list/TinyDB implemented correctly
Sorting algorithm implemented correctly to keep list of subreddits in alphabetic order
1 2 1 3 1 2 2
Screen 2: Add Subreddit Screen
Input/output elements included on this screen appropriate for requirements
Validation implemented correctly for subreddit name
Functionality provided for user to cancel adding a subreddit and return to Screen 1
1 1 1
Screen 3: View Posts Screen
Input/output elements included on this screen are appropriate for requirements
Current subreddit correctly displayed on the screen
Recent posts from subreddit are loaded and displayed using the Pushshift API
Error correctly displayed for invalid/non-existent subreddit
Error correctly displayed for lack of internet connectivity
Clicking on a subreddit opens Screen 4 with the post’s URL as a start value
1 1 3 1 2 1
Screen 4: View URL Screen
Input/output elements included on this screen appropriate for requirements
Loading message displayed/hidden using appropriate events
Post URL correctly loaded and displayed in a WebViewer component
Functionality correctly implemented for user to return to Screen 3 to view another post
1 1 2 1

CRICOS Provider No. 00103D | RTO Code 4909 Page 6 of 6

General Programming Requirements
[For each of the following criteria – full marks if included and no issues; half marks if included by
some issues; no marks if not demonstrated in solution]
Has used TextBoxes, CheckBoxes, Labels, and Buttons appropriately (including using
their action blocks and event blocks)
Has used the screen-changing mechanisms correctly and appropriately
Has used repetition construct(s) to repeat code sequences appropriately and in
appropriate places
Has used decision constructs appropriately / in appropriate places
Has formed appropriate boolean and relational expressions
Has used the list construct for appropriate purposes and used its action blocks in an
appropriate manner to manipulate/use lists
Has used the dictionary construct for appropriate purposes and used its action blocks in
an appropriate manner to manipulate/use dictionaries
Has formed procedures appropriately and in appropriate circumstances
Has used the TinyDB component appropriately
Has used the Web and WebViewer components appropriately
1 1 1 1 1 1 1 1 1 2
The names used for variables, components, procedures and their argument slots are
appropriate and clearly communicate their purpose in the code
The app is designed to be robust and does not crash unexpectedly 2
Brief Report
Two (2) events are adequately modelled using pseudocode
[1 mark each for inclusion; subtract 0.5 marks for incomplete or difficult to follow pseudocode]
Examples and explanations are provided for each of the 6 components/concepts listed in
the General Requirements for Coding section
[0.5 marks each for inclusion of all 13 elements; subtract 0.25 marks for incomplete or poor
explanation; 0 marks for any that are not included at all]
Description of testing plan conducted to ensure robustness of app
[2 marks for adequate description; subtract 1 mark for incomplete or poor explanation; 0 marks if
not included in the report at all]
2 3 2
Total: 50 marks
Total Course Marks: 20%

ITECH2000 Mobile Development Fundamentals


15% off for this assignment.

Our Prices Start at $11.99. As Our First Client, Use Coupon Code GET15 to claim 15% Discount This Month!!

Why US?

100% Confidentiality

Information about customers is confidential and never disclosed to third parties.

Timely Delivery

No missed deadlines – 97% of assignments are completed in time.

Original Writing

We complete all papers from scratch. You can get a plagiarism report.

Money Back

If you are convinced that our writer has not followed your requirements, feel free to ask for a refund.