Our app, called NUS Buddy, is a personal assistant-style productivity application designed to bring the most important information in IVLE to the NUS student user. Announcements, grade books, and final exam details are just a couple of taps away. The app will also have to-do-list functions for keeping track of homework, assignments, and quizzes. Additionally, there is an in-built CAP calculator, where students can simulate their CAP score by simply entering their module's projected grades. As an extension, the app may offer social aspects like sharing of timetables and target for the semester with a list of friends.
The technologies we will utilize include Android development and debugging tools, Java & XML coding in the Eclipse IDE, the IVLE LAPI to retrieve JSON data, possibly some SQLite database functionality, and Facebook social tools if we implement the social extensions. We may also utilize some HTML/CSS/JS to decorate this blog a little, but this is not the main focus.
I will now introduce various aspects of the application with accompanying images. I will describe each page's significance and purpose, and may delve into the implementation technologies. Some challenges and possible improvements of each page will also be considered.
Follow the jump to view the finer details.
Follow the jump to view the finer details.
Disclaimer: Some images are screenshots off my own phone, and thus the fonts you may see are my phone's font, not specific to the app.
Login screen
This is the login screen for the app. The arrangement and color scheme closely resembles Facebook's. We are hoping that with this familiar setting, new users will feel comfortable and "at home" when logging into the app for the first time.
The login credentials are packaged into a JSON object and POSTed to the IVLE server. The server then sends back an authentication token (auth token) if the login is successful. The auth token must be used in all further API calls, as it represents the current session of the logged-in user.
Home Page
After login, users are presented with the home page. This is where all important data is collated and presented to the user. This page is also meant to give a motivating view of the student's current academic situation. To get around to other pages, the user simply taps on the relevant sections, or the navigation drawer toggle on the top left corner (the 3 bars symbol).
As of now, the words in light blue are hard-coded filler text, with the exception of the student's name. The reason for this is because the relevant pages for the information to be displayed here are not yet fully developed.
The main challenge faced here is the UI design. We need to achieve a design that appears motivating and inspiring for the user, while still displaying important information at a glance. We will probably take hints from Google Now or something.
Navigation drawer
The navigation drawer, as mentioned above, is a slide-out sidebar. This, along with tabbed browsing and drop-down menus, is one of the main navigation paradigms that Android promotes. The drawer was chosen instead of tabs due to the number of pages that we intend to implement. If they were implemented as tabs, the horizontal scrolling would be really inconvenient. Another reason is because big Google apps like YouTube and the Play Store also use the navigation drawer concept.
One possible improvement is that the drawer should be partitioned with appropriate headers for each section. This is to prevent clutter and to make the drawer neater too.
L-R: Announcements, Gradebook, and Final Exams pages
The announcements, gradebook and final exams pages each show information under each category from all modules. When there is more than one module, each module will have its own box, containing the relevant information according to page. If an item in the box is selected, an alert dialog will pop up, displaying additional information like the announcement contents (as shown below).
L-R: Announcements, and Gradebook popups
The layout for the module box is from an XML template, but is not directly coded into the main layout. The JSON parser method in the Java code will read the module data (from an IVLE LAPI call) and insert the module boxes when needed, dynamically. Right now, as it is the school vacation, only the testing module is shown as all other modules have been closed. This is our main challenge when dealing with the LAPI in the summer break; our live testing abilities are a little too limited.
The following aspects of the application have not been implemented yet. They are mockups of what we intend to achieve.
L-R: Homework Planner and Test & Quizzes page
These pages offer to-do-list functionality. Grouping by modules makes it easy for the user to keep track of their workload and upcoming deadlines. The information from these two pages will also be propagated to the home page where some items will be shown. Tapping the "Add" button will bring up another page for the user to input a new item. Tapping on an existing item will bring up the same page, but for editing or deleting the item.
Proposed add/edit item page
This page will allow the user to key in specific details such as the event type (tutorial, project, midterm, etc) and the deadline or date of occurrence. The user can also specify if the item is a repeating event (weekly tutorial, fortnightly quiz, etc). Finally the user can choose to delete the item if this page is accessed in edit mode.
We intend to save the information to disk, in an SQLite database, to allow for the information to persist through the app and more importantly through logins. The details of the implementation are still not very clear as of now.
CAP Calculator, L-R: Cumulative vs Non-Cumulative Calculation
This is the page that offers the CAP calculator functionality. There are two modes, the cumulative and non-cumulative modes. The latter is only concerned with the modules specifically entered by the user in one sitting. For example, the user may only want to calculate his CAP for the current semester with simulated grades for five modules (this is more correctly referred to as the Semester Average Point). However the former must account for the CAP score and the number of MC's taken up to the current semester. After keying in the current CAP score and MC's, the user is given the option to save the values to his profile. This also saves the values to disk, much like in the previous section's homework data. Finally, the calculated CAP value can be set as a personal target for the user to meet.
The student's profile
The user will also have a page dedicated to his or her academic information. Besides the data that can be retrieved from IVLE, the user may also elaborate on certain additional aspects, like the specialization in their Major, the current CAP, and their targets to meet. A display picture may also be uploaded to personalize their profile. This page, while near-useless in a non-social app, will be enhanced if the social aspects are implemented. Possible extensions include timetable-sharing functionality and maybe a Facebook-like chat wall.
That is the general idea of the app, for now. This will likely be our proposal for the first milestone. The original mock-up can be downloaded or viewed on Dropbox here.
Thanks for reading!
Nicholas








