Inspiration

I'm a huge fan of Memrise, a vocabulary memorization app that awards users points for doing memorization exercises. It's a hugely successful model and based off that, I thought that a points-based model could have other applications. Therefore, for the Pearson Student Coding Contest, I decided that I would use such a system to make a study motivation app.

What it does:

The aim of the app is to motivate students to take notes and go to class, the main target audience being students with poor study habits. This app is integrated with Pearson Learning Studio (a learning management system), allowing the app to find out what courses users are enrolled in at a university, as well as who their class mates are (given their campus uses LearningStudio). HandUp will award points to users for taking pictures of lecture notes or content for a particular course and submitting it to the app - other users in that course can then "approve" it, giving the user points.

Using a FireBase database, additional data is stored and kept track of, such as the profile of a user, the content they upload, the content they have "approved" (upvoted), etc.

How I built it

HandUp is an Android application written in Java. The backend of the app consists of a test instance of Pearson Learning Studio, a learning management system and FireBase, a NoSQL database.

Challenges I ran into

The most challenging part of making the app was managing the memory for it, due to the amount of images being downloaded by it. The most interesting issue I encountered was the appearance of memory leaks caused by Firebase event listeners in lists not being destroyed when an activity exited. This caused an activity with lists that pulled content from Firebase to stay in memory, which would eventually lead the app running out of memory! After learning a bit more about the debugging tools offered for Android, I was able to identify the problem and solve it.

Aside from specific technical aspects, this was the first Android app I've made outside of school and the first time I worked using a RESTful API, which lead to a learning curve at first. I spent a great deal of time making sense of the Android environment as well as making and parsing queries to / from Pearson's service. Making user data accessible via an online database also presented issues, such as facing bandwidth issues when downloading data.

Accomplishments that I'm proud of

This is the first Android app I've made outside of school, and I'm happy to say I'm finished with it. I ironed out all the major performance issues, which is important considering it's reliance off sending / receiving a fair amount of image data. Also, though the UI is a little simple, a great deal of energy was put into it's appearance - I feel that I managed to make it visually appealing.

What I learned

The most important thing I learned throughout the process of developing the app was how to manage memory in an environment where it's limited. Making this app gave me a good overview of the Android developer environment - if I ever need to get content or a service out to a lot of people on mobile, I know how to now.

Used Material by Others

Title Image

Taken from Wikimedia Commons, By Xbxg32000 [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0) or GFDL (http://www.gnu.org/copyleft/fdl.html)], via Wikimedia Commons

Share this project:

Updates

posted an update

I've decided it's time to wrap this project up. I managed to clean it up and improve the performance of it, and as I had already done some basic network programming, I saw no learning benefit in implementing the Bluetooth meeting verification system. Therefore, the only major feature that's implemented is the ability to share photos with your classmates, whatever they may be.

Though the presence of a single feature (which can be used for things other than what it's intended for as it's simply a photo sharing mechanism) limits the scope of the app, I've learned so much from making this. The most important things I've learnt are to do are systems related - for instance, memory management (on a mobile / garbage collected environment) or NoSQL database structuring / querying.

Log in or sign up for Devpost to join the conversation.

posted an update

Hey guys!

Here's the updated version of HandUp: https://youtu.be/WniEuA4Ss4U. All in all, the back end and UI have been developed to the point where I can start adding the points functionality, specifically:

  • Users will be able to arrange meetings with peers in their class (at least 24 hours in advance) and can then meet up to study
  • Users can see what other content other users in their course have submitted - this content can then be "upvoted", which will in turn give user's points.

I had really wanted to add a notes verification feature, but due to limitations with text-extraction services like AlchemyAPI (which can't read hand written text very well), I'm going to have to scrap this feature. Stay tuned!

Log in or sign up for Devpost to join the conversation.