**Project Reports for nusmods**
This project is done at the Vostok (beginner) level.
First Report (Week 3)
The aim of the project is to develop a platform which will allow NUS students to easily retrieve prerequisites and preclusions of modules offered by NUS. The motivation to do so is because the current system offered by NUS is not as user friendly, especially for bulk retrieval of information for several modules. We have targeted 2 platforms to develop for, namely, a web application as well as an android application. We would be using Google Datastore for storage and other platforms will access the data through a REST interface.
The main features in the website are the table mode, graph mode and REST interface. The table mode allows users to view information of multiple modules in a single table. The graph mode allows them to manually map out a dependency graph of their modules. The REST interface allows other developers to make use of all module information that we have already preloaded into our database.
Second Report (Week 8)
Over the last couple of weeks, we have managed to successfully implement all features that were proposed.The features are as follows:
1.Beautifying the UI of the android app - The UI has been improved to include instructions and boxes for neater display of content, the submit button has also been enlarged so it is easier for users to hit it. Screenshots available at https://play.google.com/store/apps/details?id=com.limbenjamin.nusmods. The screenshots are pretty self explanatory in case you are not using android or do not want to install the app.
2.Tidying up the code (currently most of the code is hacked together) - Most of the excess code for functions not being used has been stripped, query has been parameterised to improve on security.
3.Share on facebook/twitter functionality - Can be observed on main site.
Reponse to feedback
Changing name because there is an existing nusmods.com - We will retain the URL nusmods.appspot.com but our page title and page name will be named "NUS Modules" to avoid confusion.
Putting table at side of graph- We have added a feature so that when you hover your mouse over a module, the prerequisites will show in a popup bubble
Additionally, we have also added in instructions throughout the website to guide users. Pictures in the banner to show users what they can expect. We have also added in additional data on which semester a module is offered as feedbacked.
For the next sprint, we will working on the following three features:
1. Allowing users to export the table/graph as csv/jpg
2. Improving the UI of the graph page
3. Script to automate process of updating module information
Feature 1: A year 1 arts student has spent the last 30 minutes graphing out her modules and wants to save it for future reference. She is not familiar with computers and does not know how to use the print screen function.
Feature 2: A year 2 new media student wants a nicer looking graph page than the current drab grey coloured page.
Feature 3: The developers of this app do not want to spend the rest of their time in NUS updating modules and want a script which will automate the process.
Final Report (Week 12)
We have sucessfully implemented all the features that were targeted in the previous sprint. Video can be found [here](http://limbenjamin.com/video3.mp4)
1) Allowing users to export the table/graph as csv/jpg - instead of csv for the table and jpg for the image, we have implemented export to xls for table and png for image due to exising libraries which are already present for the file formats. Unfortunately, there are a few security features triggered which might inconvenience users, excel 2013 would display a warning that the file might be unsafe and chrome will block the image popup.
2) Improving the UI of the graph page - The prerequisite popup bubble has been styled to look nicer, users have the option to toggle between white, red, green or blue background color for the module by double clicking on it. Colors can be used to differentiate between core and electives, or users can come up with their own color scheme, e.g. different colors for different level modules.
3) Script to automate process of updating module information - The script to download and parse module information from IVLE website has been completed and uploaded here. This script will generate a CSV file which is ready for upload to GAE using the bulkloader. We did not automate the uploading because of the amount of information will definitely exceed the daily upload quota.
No additional work was done on the android app for this sprint.
Initial aim : Vostok
Current Estimated level : Gemini
List of features implemented:
- Display of module information in table form
- Manually graph out module prerequisites
- API to allow other other developers to access database
- Android app to access module information
- Social media integration
- Export information as xls and png
- Shell script to automate updating process
We intended to automate the graph generation but eventually decided not to implement it because parsing the prerequisites might introduce errors. E.g. instead of module A AND B, our parser might interpret it as module A OR B. This would be disastrous if the user did not double check and relied solely on our graph.
Currently, we see no competitors as we do not know of a web app that provides similar functionality. The IVLE site provides minimal competition as the information is scattered and difficult to locate. Nevertheless, we have taken note that a number of teams in orbital are embarking on a similar project and might pose competition.
NUS students. This app is created for the community and will be provided free of charge. Students who feel that it is beneficial can choose to make use of it.
We have scrapped information from over 10000+ modules in IVLE and uploaded it into the datastore, so there are currently no external dependencies in the short term, however, next semester when we wish to update the information, we have to scrap IVLE once again, so the only condition is that IVLE has to be updated and there are no major changes to the URL structure.
For the next sprint, we will working on the following three features:
1. Beautifying the UI of the android app
2. Tidying up the code (currently most of the code is hacked together)
3. Share on facebook/twitter functionality
1) A year 3 student at NUS, who has only 4 semesters left, must quickly figure out which remaining module is the most "deeply nested" so he can clear all its prerequisites before the final semester and graduate on time.
2) A year 1 student at NUS wants to identify which core modules he is eligible to take next semester.
3) A year 2 student is discussing with her friends over lunch on what module they should take next semester and wants to quickly find out the prerequisite for a certain module.
GAE/Python for website - Requirement for Vostok Level, greater level of support available
Android for mobile app - Possess hardware required for development, easier to distribute final product
ndb - Querying datastore faster and simpler then external db. ndb provides better caching which would be useful since only a small portion of the 10000+ modules will be accessed frequently.
Rest - Simple. Port 80 is always open since it is used for HTTP. Easy to cache. Module information is available publicly for anyone to access, no security concerns
Boomi rest server - For rest interface
jsPlumb - For the graph mode
As of now, all of the major features suggested during ignition have already been completed. We will be working on minor details and touch up. If you have features you would like to see being implemented, please feel free to share with us.
- Flow of website