1. Project Overview
The EPA is a U.S. federal government agency devoted to safeguarding the environment. One of the EPA's great concerns is the proliferation of cyanobacterial harmful blooms (cyanoHABs) in the nation's lakes. The following resources provide information on what cyanoHABs are and how they threaten the environment.
The TopCoder project on cyanoHABs aims to develop an algorithm that will be deployed in an Android app with mapping and data visualization capabilities. The app will inform local and federal policy makers about locations where bloom events are likely to occur, allowing them to concentrate their efforts in those areas.
2. Contest Overview
Welcome to third assembly in the series of five EPA Android App Assembly Contests.
In this contest, we are looking for you to develop the module assembly for back-end module of the system of EPA Android App. We want you to use all the available information architecture in system architecture and application requirements specification to develop this module architecture. The EPA Android App system has four modules:
1.) Admin Website Module
2.) Data Management Module
3.) Back-End Module
4.) Front-End Module
We have concluded the architecture contests of all the four modules and we have recently run a contest to sync all the architectures so that they are compatible to each other. On the development end, we have already completed the first two modules - admin website and data management module and we recently updated them based on the new architectures.
In this contest, we want you to develop the most critical part of the system - Back-end module.
EPA Android App Back-end Module:
This module will be responsible for doing all the back-end operations of the app. It will house prediction algorithm(s) (to be developed separately in marathon match) and statistical analytic engine (to be built as part of this module) in addition to mundane backend tasks of message passing and information transfer. Hence, this module will be computationally intensive and will require great performance consciousness. Please note that performance is the key for this module. So, please make sure to include all possible optimizations so as to make this a very efficient module.
Following are key components for backend:
1.) Prediction algorithm: This algorithm has been developed as a part of marathon match. The current algorithm has been provided in the \Prediction_Algorithm folder. The current implementation is C++ and it runs against PredictionPoint input. The developer will need to write a main method so that the algorithm can be run from command line and will take two arguments:
1. The prediction point as a string (simple number)
2. The output of the file will go the CSV file defined in the second argument. The file structure is defined as: latitude, longitude, sampleDate, value, imageFilename, thumbImageFilename
Note that any value not provided will simply be left blank.
2.) Statistical Engine: We want to house a small statistical engine that will calculate basic statistical values from the provided data. It will also use the same data as provided to the algorithm.
3.) Interaction with Data Management Module
4.) Interaction with Admin Website
5.) Interaction with Front-End
7.) Extra Tools
3. Technology Overview
This section provides a comprehensive list of all technologies used in the project. Please refer to back-end architecture for specific technologies relevant to this contest.
- Java 6
- Amazon EC2 Server
- Spring 3.2.8: http://www.springsource.org/
- MySQL 5.7: http://dev.mysql.com/
- OpenJPA 2.3: http://openjpa.apache.org/
- Log4j 1.2.17: http://logging.apache.org/log4j/
- Velocity 1.7: http://velocity.apache.org/
- GDAL: http://www.gdal.org/
- GDAL Java: http://trac.osgeo.org/gdal/wiki/GdalOgrInJava
- Apache Commons Net 3.3: http://commons.apache.org/proper/commons-net/
- Apache Commons IO 2.4: http://commons.apache.org/proper/commons-io/
- Quartz Scheduler 2.2.1: http://quartz-scheduler.org/
Please note that the developers are not allowed to use any component from TC Catalog for this contest.
4. Process Flow and Storage Considerations
Please follow the Architecture Design completely for process flows and storage.
5. Resources Provided
The following resources have been provided in the forums. You will be able to access it after registration:
1.) Module Architectures of all four modules
2.) EPA Admin Website and Data management assembly code
3.) Prediction Algorithm
4) System Design Specification and System Architecture TCUML
5.) Application Requirements Specification and Use Case TCUML
6.) EPA Android App front-end prototype