Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Google Summer of Code 2014 Ideas
<This page lists project ideas for GSoC 2014, we will soon put up a new page for project ideas for GSoC 2015. Watch this space.>
BuildmLearn would be applying to participate in Google Summer of Code 2014 program. This page lists some ideas for enhancing the BuildmLearn Toolkit. We suggest the students to submit proposals based on the ideas below. While we are also open to new ideas, the ones listed below fit our roadmap and future development.
Note: Students interested in submitting a proposal to our organisation should read the general instructions on this page: Guidance for Students.
Broadly the ideas listed below consists the following. Probable mentors are mentioned for each of the idea in the sections they are elaborated below.
Please feel free to connect with the mentors listed about the ideas. We encourage you to post in our BuildmLearn Google group, the mentors are active in the group.
##Porting the Toolkit to Linux and Mac OS
###Summary: The BuildmLearn Toolkit works on all Windows Platforms. We plan to support the toolkit on other popular PC platforms like Linux (Ubuntu & Kubuntu) and Mac OS.
###Skills: Basic knowledge of C++ is required. Knowledge and experience of working with Qt projects is desirable. Experience of working on any Debian Linux distro and Mac OS is a plus.
###Details: The BuildmLearn toolkit is developed on with a cross platform development framework viz. Qt. Since Qt is supported on all the popular PC platforms (Windows, Linux and Mac), it is possible to port the toolkit to the non-windows platforms. The porting effort would mainly contain the following to dos:
Port the UI - We would like the toolkit experience for the users to be consistent over different platforms. The UI is developed using QtGui modules and is Widget based. The toolkit contains interfaces for various mobile templates. The first part of the porting task is to make sure that all the interfaces work on the target platform. A tricky thing in this part could be to make sure that the UI supports various display resolutions, in other words it shouldn't be just made for one specific screen resolution.
Port the business logic / engine - Second up, is the functionality of the toolkit. This would mainly contain decompiling and recompiling an android mobile application. The kind of Qt modules that may be handy here are QProcess and QThread.
##Mobile Application Development
###Summary: We are looking to develop several educational mobile applications on various platforms, and make them available freely on various mobile app stores. Some of these ideas are listed below. We are also looking for some interesting ideas to create mLearning applications, if students have ideas of their own and wish to submit their own proposals, we would welcome this as well.
###Skills: To get selected for this, it is good to have some knowledge of mobile application development in one or more of these platforms: Android, Windows Phone, iPhone, Nokia Asha (J2ME) or HTML5 web platform.
1. 'Learn from Map' application (Learn Geography)
Probable mentor: Neha Dhanwani
In this mobile application, we intended to use the location sensing and map capabilities in smartphones. Basically, the idea is to build an application with map features and introduce a gaming aspect for users to learn geography in a informal environment.
The user would be able to play a quiz game, answers of which would be a location i.e. it can be a place, area, city, state or country. The user would be able to interact with the map in various ways like zoom-in, zoom-out, panning, tapping, etc. and navigate to any location on the map. In response to a question, the user can drop a pin at a location and answer.
Adding artificial intelligence: The application could provide options to the user about which region (countries, continents) he would like to play the quiz for. We would also like to explore how to automate the questions for a particular region. For example, if the user selects a country, the application could do computations, using some available semantics, to formulate questions for that country.
The overall idea is to make it a fun experience for the user while making him learn geography informally. Please feel free to add more ideas when submitting your proposal.
2. Application to measure sensor data and various parameters - elevation, noise and sound, distance, magnetic field and seismic waves
Probable mentor: Pankaj Nathani
In this mobile application, we aim to visualize data from various mobile sensors.
The idea is to have an application which shows a list of all the sensors available in the device. Not only sensors, the list would also show various parameters that can be interpreted from these sensors. For example, elevation, noise and sound, magnetic field and seismic waves. When the user chooses a sensor / parameter from the available - the live data from the sensor (or the calculated parameter value) would be shown to the user. Various visualisations for representing this data would available. The simplest real time visualisation would be various types of 2-D graphs on which the value of sensor data / computed parameter could be plotted against time.
3. 'Label the diagram' application
With this mobile application, we aim to help students to study ‘diagrams' from various science subjects like Science, Physics and Biology.
The idea is to have an application that presents diagrams to the user on various subject topics. There would be a box containing set of words. The user needs to drag and drop the words to the right place in the diagram, so as to label part diagram. Score would be incremented when labelled correctly; also a short info regarding the label would be displayed.
4. ‘Practice handwriting’ application
Probable mentor: Aditi Sharma
This mobile application is helpful to children who are learning how to write, by allowing them to practice their handwriting skills.
The application would present letters & words, and allow the kids to trace them. Voice/ Speech warnings would be given instantaneously when the trace is wrong. The kids would be able to restart the trace once they receive the warnings.
As studies indicate, kids are more likely to spend more time practicing this on smartphone / tablets when compared to pen and paper.
To start with, we would use english literals (small, capitals, numerics) and words in this application. However, we would like the application framework to be scalable to other languages as well in the future. Developers thus need to work on a handwriting trace engine that would work for most of the languages, given the boundaries of the shape of the letter / words are known.
5. 'Tell the time' application
Probable mentor: Avnee Nathani
This mobile application would be useful to teach the kids about time.
The application would contain different sets of activities to teach time telling and calendars. The application would be able to teach time principles in both 12 hr and 24 hr formats. As the application starts, some principles about how to tell the time would be presented. The user can navigate and see these again whenever he desires. Once the user is through the basic principles of 'time telling’ he can be riddled. An interactive clock would be displayed and the user would be asked to move hands of the clock to show the desired time. Text to speech can be used along with this to make it more fun for the kids.
Probable mentor: Rahul Ahuja
###Summary: We are planning to create some new tools for helping us in translating strings to various languages. Basically, these would be Python scripts that would automate translations.
###Skills: Pre-requisite knowledge of Python language is good to have when submitting your applications for this task. It is not absolutely mandatory to know Python to apply to work on this, we would consider students with a good learning ability who have worked on any programming language.
###Details: We have more than one ideas for creating translation tools.
For example, one such scripting tool would function in the following way:
- Provide a basic interface to the user and ask for an input CSV file
- The interface would also contain options for setting source and destination languages.
- Once the user provides the CSV / excel file, the script would translate the strings in the first column using a REST API (google / bing translate APIs).
- When done, the output would be a CSV / excel file which contains translated strings. The translated strings would be ordered in different columns / spreadsheets for each language.
- The user interface of the tool may also provide options to choose as to which REST API services to use. For e.g. google / bing translate APIs.
We would like the student to start developing this tool for either Linux / Windows platform. If time permits, we would like to support both platforms.
Probable mentor: Ashmita Nigam ###Summary: We have many releases of the toolkit - some of the releases have major updates like addition of new mobile templates and features; while some have incremental updates. We have requirements for fixing bugs the various aspects of our project viz. the toolkit on various computers (various resolutions) and mobile applications on various android devices. The bugs are logged on github: https://github.com/BuildmLearn/Toolkit-mobile-templates/issues
###Skills: Ability to follow the code on already existing modules. Basic familiarity of how the BuildmLearn Toolkit functions and good ‘learning from documentation’ skills are required for this tasks. Basic know how of using git, logging issues on github is valued. Also, access to one or more android phone/ tablet devices is required to participate in testing on the mobile templates side.
Testing the toolkit - This would include testing the toolkit on various versions of Windows operating system and various screen resolutions. Trying to create applications for various topics, and using the different mobile templates available in the toolkit. Try the create applications on the simulator available in the toolkit.Check for irregularities in UI and functionality in the whole process of creating an application.
Testing mobile templates - This is the second part of testing, the applications generated when testing the toolkit. This is more complex than the toolkit testing as it includes using various automated testing tools available for android application testing. For example, you can write test scripts to check the functionality and UI responsiveness of the application. Any irregularities found should be logged and reported.
Reporting bugs - Any irregularities can be flagged as issues and reported to git hub issue management tool. You need to check if the issue has been reported earlier so that to avoid duplicates. If yes, you may add your comments / additional info to the existing bug report.
Fixing bugs - This is the juicy part of the whole task. Based on your skill set take up some bugs that you can fix on the mobile templates. We can assign you some easy ones to start with. Try to get yourself familiarised with the code and fix the bugs. Once done, report them as fixed.. and someone would give them a run of testing.