ITECH2000 Mobile Development Fundamentals Assessment Task 3 – AppInventor App (Reddit Browser) Overview 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: 25% (of final course mark) Due date: 11:59pm, Sunday 6th June 2021 (Week 11) – after this date, you will receive a penalty Cut-off date: 11:59pm, Sunday 13th June 2021 – after this date work will not be accepted Minimum time expectation: 20 hours Maximum time expectation: 40 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 (https://reddit.com), 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: https://en.wikipedia.org/wiki/Reddit. 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. As long as you fulfil the requirements in a logical way that follows what you have learned this semester in terms of programming and app design, you have free reign to design your interfaces as you like. CRICOS Provider No. 00103D | RTO Code 4909 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 (or an empty list on the first run), as well as a “Add New Subreddit” button and a “View Saved Posts” button. When the “Add New Subreddit” button is 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). When the “View Saved Posts” button is clicked, this should open Screen 5. Once the user has added a subreddit, it should be displayed in the list of subreddits (along with any other subreddits that have been added). 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 materials). 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: https://api.pushshift.io/reddit/submission/search/?subreddit= subreddit_name &limit=5 For example, https://api.pushshift.io/reddit/submission/search/?subreddit=Android&limit=5 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. Note: If you are receiving error 1101 when trying to connect to the Pushshift API, try changing the URL to use http instead of https, e.g., http://api.pushshift.io/reddit/… etc. 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. There should also be an option on this screen for the user to save the current link as a “favourite”. This option should prompt the user to input a custom title for the link, and then the custom title and associated URL should be saved to a Text file. Do not use a TinyDB for this feature! Screen 5: Saved / Favourite Posts Screen Screen 5 should display the list of favourites by loading them from the Text file, as saved in Screen 4. The custom titles of the favourites should be displayed in a list on the screen. When the user selects a title from the list, the associated URL should be opened and displayed in Screen 4. This screen should also provide an option to clear the favourites, which would delete all the currently saved favourites from the Text file. 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 and Web component • ListView or ListPicker • TinyDB and File • Local and global variables • Procedures 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 robust. 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. • 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 the component(s) in your solution and justify why. If you have used a component multiple times, please describe one example. Note: There are 6 in total. • 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 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 https://federation.edu.au/current-students/learningand-study/online-help-with/plagiarism Submission 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 name. 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. Feedback 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 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 Functionality correctly implemented for a link to be saved as “favourite” to File 1 1 2 1 2 Screen 5: Saved / Favourite Posts Screen Input/output elements included on this screen appropriate for requirements Saved posts correctly loaded from File and displayed as titles using appropriate methods Clicking on a saved post opens the correctly associated link in Screen 4 Functionality to delete all saved posts from the File is implemented correctly 1 2 1 1 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 File component appropriately Has used the Web and WebViewer components appropriately 1 1 1 1 1 1 1 1 2 2 2 The names used for variables, components, procedures and their argument slots are appropriate and clearly communicate their purpose in the code 1 The app is designed to be robust and does not crash unexpectedly 2 Brief Report Two (2) events are adequately modelled using 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) Description of testing plan conducted to ensure robustness of app 2 3 2 Total: 60 marks Total Course Marks: 25% Feedback:

ITECH2000 Mobile Development Fundamentals

Assessment Task 3 – AppInventor App (Reddit Browser)

Overview

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: 25% (of final course mark)

Due date: 11:59pm, Sunday 6th June 2021 (Week 11) – after this date, you will receive a penalty

Cut-off date: 11:59pm, Sunday 13th June 2021 – after this date work will not be accepted

Minimum time expectation: 20 hours

Maximum time expectation: 40 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 (https://reddit.com), 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: https://en.wikipedia.org/wiki/Reddit. 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. As long as you fulfil the requirements in a logical way that follows what you have learned this semester in terms of programming and app design, you have free reign to design your interfaces as you like.

CRICOS Provider No. 00103D | RTO Code 4909

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 (or an empty list on the first run), as well as a “Add New Subreddit” button and a “View Saved Posts” button.

When the “Add New Subreddit” button is 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).

When the “View Saved Posts” button is clicked, this should open Screen 5.

Once the user has added a subreddit, it should be displayed in the list of subreddits (along with any other subreddits that have been added). 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 materials).

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:

https://api.pushshift.io/reddit/submission/search/?subreddit= subreddit_name &limit=5

For example, https://api.pushshift.io/reddit/submission/search/?subreddit=Android&limit=5 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.

Note: If you are receiving error 1101 when trying to connect to the Pushshift API, try changing the URL to use http instead of https, e.g., http://api.pushshift.io/reddit/… etc.

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.

There should also be an option on this screen for the user to save the current link as a “favourite”. This option should prompt the user to input a custom title for the link, and then the custom title and associated URL should be saved to a Text file. Do not use a TinyDB for this feature!

Screen 5: Saved / Favourite Posts Screen

Screen 5 should display the list of favourites by loading them from the Text file, as saved in Screen 4. The custom titles of the favourites should be displayed in a list on the screen. When the user selects a title from the list, the associated URL should be opened and displayed in Screen 4.

This screen should also provide an option to clear the favourites, which would delete all the currently saved favourites from the Text file.

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 and Web component

• ListView or ListPicker

• TinyDB and File

• Local and global variables

• Procedures

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 robust.

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.

• 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 the component(s) in your solution and justify why. If you have used a component multiple times, please describe one example. Note: There are 6 in total.

• 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

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 https://federation.edu.au/current-students/learningand-study/online-help-with/plagiarism

Submission

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 name.

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.

Feedback

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

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

Functionality correctly implemented for a link to be saved as “favourite” to File

1

1

2

1

2

Screen 5: Saved / Favourite Posts Screen

Input/output elements included on this screen appropriate for requirements

Saved posts correctly loaded from File and displayed as titles using appropriate methods

Clicking on a saved post opens the correctly associated link in Screen 4

Functionality to delete all saved posts from the File is implemented correctly

1

2

1

1

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 File component appropriately

Has used the Web and WebViewer components appropriately

1

1

1

1

1

1

1

1

2

2

2

The names used for variables, components, procedures and their argument slots are appropriate and clearly communicate their purpose in the code 1

The app is designed to be robust and does not crash unexpectedly 2

Brief Report

Two (2) events are adequately modelled using 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) Description of testing plan conducted to ensure robustness of app

2

3

2

Total: 60 marks

Total Course Marks: 25%

Feedback:

Place your order
(550 words)

Approximate price: $22

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency
Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

Each paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.

Read more

Free-revision policy

Thanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.

Read more

Privacy policy

Your email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.

Read more

Fair-cooperation guarantee

By sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.

Read more
Open chat
1
You can contact our live agent via WhatsApp! Via + 1 929 473-0077

Feel free to ask questions, clarifications, or discounts available when placing an order.

Order your essay today and save 20% with the discount code GURUH