Ideas
FOSSEE Toolbox Project
Difficulty level: Hard
( Interns will be paid according to the quantum of work completed rather than a bulk amount. Complete honorarium details will be provided once the applicant has been selected for the project.)
The FOSSEE group has developed various toolboxes in Scilab to match Matlab’s functionalities. The interns will have to develop functions, provide documentation and test existing functions. Interns from any background can apply. For each toolbox, domain expertise in terms of projects and courses is expected. We have internship positions for the following toolboxes:
1. Signal Processing/DSP
-
Advanced level knowledge of concepts and technical terms listed here-
-
Matlab/Scilab coding experience is required.
2. Image Processing & Computer Vision
-
Advanced level knowledge of concepts and technical terms listed here-
-
Experience calling OpenCV/PCL functions in C/C++ code is required.
3. Communication Systems
-
Advanced level knowledge of concepts and technical terms listed here-
-
Matlab/Scilab coding experience is required
4. Optimization
-
Knowledge of optimization concepts is expected.
-
C/C++ coding experience is required.
5. Scilab to C code conversion
-
C coding experience is required.
-
Experience in embedded systems is an add-on.
Applicants for image processing, computer vision and optimization toolboxes should
- Have excellent coding skills in C and C++
- Know how to call functions from external libraries in C/C++ code
- Know how to compile C/C++ code by linking against external libraries
Application Procedure:
- Applicants should attempt the coding test for the various toolboxes that will be put up here- http://fossee.in/internship on May 1, 2017. Submission steps and deadline will be mentioned in the problem statement for each toolbox. No reminder regarding the test or submission deadline will be sent.
- No project proposal is required for this project.
Scilab-Julia Interface
(Mentor: Shamika, Openings: 1, Honorarium: 10000)
Difficulty level: Easy
Create an interface that can call any Julia function from Scilab console and displays the output of the Julia function on Scilab console.
Applicant profile: The applicant should
- Have excellent coding skills in C and C++
- Know how to call functions from external libraries in C/C++ code
- Know how to compile C/C++ code by linking against external libraries
Suggested reading:
Scilab API: https://help.scilab.org/docs/5.5.2/en_US/section_204636e951f595409bc6782bb8e1d2d9.html
Embedding Julia in C:
http://docs.julialang.org/en/release-0.4/manual/embedding/
Application Procedure: Submit a project proposal following WnCC SoC guidelines and deadline.
Scilab Video player
(Mentor: Shamika, Openings: 1, Honorarium: 10000)
Difficulty level: Easy
Create a native video player for Scilab. It should have all the basic features found in any video player- play, pause, stop, rewind and forward.
Application Procedure: Submit a project proposal following WnCC SoC guidelines and deadline.
Scilab server
(Mentor: Srikant, Shamika, Openings: 2, Honorarium: 50000 per person)
Scilab Textbook Companion (TBC) is one of the flagship activities undertaken by FOSSEE. It is a collection of code for each solved example of a standard textbook. We have active Scilab and Python TBCs. Students and faculty of colleges have created more than 500 Scilab TBC and a similar number of Python TBC. As there are about 50,000 scripts in 500 TBCs, it becomes a valuable resource for documentation, function usage search and also as a subject learning material. More details could be fetched from here.
Unlike other scripting languages, Scilab loads a huge set of libraries in the background. Thus a single instance causes considerable consumption of computer resources.This would create a problem if we want to have parallel instances of Scilab.
We have thought of a couple of solutions to this problem.
- Fixing the Scilab core to only load libraries which are called in the program at the run time.
- Developing an atoms module to accept code from various threads and pipe them to a single Scilab instance.
The atoms module shall do the following:
- It should decode communication packet(code) received from user
- Execute Scilab code in a protected environment
- Return the result/error to the user
- Clear the Scilab memory
In the case of overloading on a single Scilab instance, there should be an intermediate program to monitor and initiate a new Scilab instance. This autoscaling operation should happen seamlessly. The autoscaling program should keep track of user requests.
Xcos on web
(Mentor: Inderpreet, Dipti, Openings: 2 , Honorarium: 50000 per person)
The objective of Xcos on web project is to provide access to the capabilities of Xcos simulator over web. Upon the completion of this project, the users with web-enabled devices will be able to load, create and simulate Xcos diagrams through a web browser. This project has been partially completed and available here. The current implementation framework is as follows.
- Overall system design – Design of browser based Xcos simulator to include editor, several menu options, palette libraries, simulation options, etc.
- Graphical User Interface – Provision of palette blocks in the left pane, set scope parameters and right click functionalities, port constraints for the simulator blocks, Tooltip and color wheel features, Set context option, etc.
- Data Structures – To enable relevant function call for each block dragged and dropped on the browser-based editor followed by setting the values of model, graphics, GUI and docs; Mapping of Xcos blocks' sci files to JavaScript
- XSLT (eXtensible Stylesheet Language Transformations) – Use of a style sheet language to convert XML generated by GUI into Scilab compatible XML
- Parser – Conversion of data structures to JavaScript using regex in Python
- Server – Xcos file after suitable conversion is sent to the server for computation and simulation and the results are brought back at the user end in the form of images
Technologies used: mxGraph, XSLT, JavaScript, Python, Java Servlet, NGINX, Apache Tomcat
The code is available here.
Building a Generic Remote Triggered Virtual Lab Interface
(Mentor: Dipti, Inderpreet, Openings: 1, Honorarium: 30000)
A Virtual Laboratory is an online facility aimed at providing a laboratory experience to students. Unlike Simulation Virtual Labs, Remote Triggered Virtual Labs (RT labs for short) is that category of Virtual Labs which enables the student to access a real experimental setup, remotely. One such facility is available for a laboratory setup known as “Single Board Heater System”, SBHS for short. The SBHS RT lab can be accessed at http://vlabs.iitb.ac.in/sbhs/ To understand what is SBHS, see the spoken tutorial available here http://goo.gl/lYdhRi. If you want to quickly learn how to access SBHS RT labs see http://goo.gl/vs5P9d A good documentation on this is available at http://sbhs.fossee.in/downloads under the “Documentation” section. The document contains a dedicated chapter which attempts to explain the Client-Server architecture.
Shortcomings in the current solution:
- The solution is very specific to SBHS experimental setup. The architecture cannot work without re-writing a few modules if there is even a slight change in the hardware.
- There are some known software bugs which make a few SBHS unusable. These bugs are random and are currently unsolved.
- It has very less admin specific features.
Problem Statement:
- You are expected to come up with a more generic solution for RT labs in general. The solution should be robust, low on maintenance, automated and easily adaptable for a new hardware experimental setup, with minimum changes in the code. You may think of a central interface to customise the web solution as per the new hardware. For example, a number of inputs-outputs, protocol etc.
- The solution should have all the features of the existing SBHS RT lab solution. You can propose better alternatives, though.
- The solution has to be well documented with a regular version controlling/ backup setup.
- The admin should have easy interfaces to do health checkup of the hardware(s), bypassing all the user rules and also should be able to download users experimental data files based on the slot date-time value. Basically, the admin should have an easy control over the server without being a domain expert.
Develop GUI for OpenModelica using Python
(Mentor: Rahul, Openings: 2, Honorarium: 25000 per person)
Job Description
We are looking for a python developer with experience in GUI development. You will be working on a project that involves developing a GUI, for a chemical process simulator, in python using kivy (https://kivy.org/). The work includes designing, developing and testing various GUI functionalities like menubars, taskbars, drag and drop, popups etc. This GUI will then be interfaced with OpenModelica (https://openmodelica.org/), which will serve as a simulation engine for the GUI. The interface will be majorly based on making system calls from python using the package os (https://docs.python.org/2/library/os.html). Therefore, part of the work will be dedicated to the development of the above mentioned interface.
Job Requirements
1. Good python programming skills.
2. Familiar with GUI concepts.
3. Experience in Tkinter or PyQt is preferred.
4. Good understanding of OOPs.
Improving SBHS remote-triggered virtual lab server and website
(Mentor: Rupak, Inderpreet, Openings: 2, Honorarium: 30000)
A Virtual Laboratory is an online facility aimed at providing an laboratory experience to students. Unlike Simulation Virtual Labs, Remote Triggered Virtual Labs (RT labs for short) is that category of Virtual Labs which enables the student to access a real experimental setup, remotely. One such facility is available for a laboratory setup known as “Single Board Heater System”, SBHS for short. The SBHS RT lab can be accessed at http://vlabs.iitb.ac.in/sbhs/ To understand what is SBHS, see the spoken tutorial available here http://goo.gl/lYdhRi. If you want to quickly learn how to access SBHS RT labs see http://goo.gl/vs5P9d. A good documentation/manual on this is available at http://sbhs.fossee.in/downloads under the “Documentation” section. The document contains a dedicated chapter which attempts to explain the Client-Server architecture.
A few bugs/features to be addressed:
-
There are two main bugs which result in "no connection" to the server and "no communication" with the hardware. They have to be identified and resolved.
-
An admin interface is required where he/she can carry out certain tests and check for the server health, easily. For example, there has to be a web facility for the admin to test a particular SBHS and acquire the results, bypassing the common user rules.
-
An admin interface is also required to check all webcams.
-
An admin interface is also required to download users data files based on slot date-time.
-
Needs test cases to check the server functionality.
-
Some Version Controlling issues have to be fixed.
-
Automated health monitoring has to be implemented to remove the non-working SBHS units and report to admin.
-
The current server handles all the load, including hardware interface. Enable load sharing with a connected computer.
Front end development for FOSSEE websites
**Project 1**
(Mentor: Priyanka, Prashant, Openings: 2, Honorarium: 20000 per person)
This internship involves front-end development for various FOSSEE websites.
Requirements:
* Wireframe/layout a website or web application.
* Design and implement user-facing features considering rendering time and reusability of UI components.
* Optimize web applications to maximize speed and scale. Support diverse clients from high powered desktop computers to small footprint mobile devices.
* Write client-side code for web-based applications, create fast, easy-to- use, high volume production applications, and develop prototypes quickly.
* Create and edit PNG and JPEG images and/or take a PSD and turn it into a working website.
* Write HTML and CSS from scratch.
* Add interactivity to a website with JavaScript (or jQuery)
* Knowledge of Django/Python/PHP is required.
Tasks:
Improve three Django based websites
**Project 2**
(Mentor: Prashant, Priyanka, Openings: 2, Honorarium: 15000 per person)
This internship involves development of a common Drupal based theme .
Requirements:
* Wireframe/layout a website or web application.
* Design and implement user-facing features considering rendering time and reusability of UI components.
* Optimize web applications to maximize speed and scale. Support diverse clients from high powered desktop computers to small footprint mobile devices.
* Write client-side code for web-based applications, create fast, easy-to- use, high volume production applications, and develop prototypes quickly.
* Create and edit PNG and JPEG images and/or take a PSD and turn it into a working website.
* Write HTML and CSS from scratch.
* Add interactivity to a website with JavaScript (or jQuery)
* Knowledge of PHP is required and prior experience using CMS like Drupal is preferred.
Tasks:
Develop a Drupal based theme.
Application Procedure:
* Submit a project proposal listing how you will improve www.scilab.in.
* Include mockups, wireframes and other files that you wish to submit as part of your proposal.
* Include links to your portfolio
Develop GUI for OpenFOAM
(Mentor: Prof. Shivasubramanian Gopalakrishnan, Openings: 2, Honorarium: 40000 per person)
We are looking for a python developer with experience in GUI development. You will be working on a project that involves developing a GUI for OpenFOAM, a powerful open source software for Computational Fluid Dynamics. The work includes designing, developing and testing various GUI functionalities which will then be interfaced with OpenFOAM (https://openfoam.org/). We are planning to begin with developing GUI for the snappyHexMesh utility of OpenFOAM, followed by more advanced utilities.
Job Requirements
1. Good python programming skills.
2. Familiar with GUI concepts.
3. Experience in Tkinter or PyQt will be an advantage.
4. Good understanding of OOP.
Website development for Spoken Tutorial project
(Mentor: Kirti, Nancy, Openings: 2, Honorarium: 50000 per person)
We are looking for a Web Developer who will be responsible for the coding, innovative design and layout of the Project's website. Web developer responsibilities include building Spoken Project's website from concept all the way to completion and documentation.
Responsibilities
• Write well-designed, testable, efficient code by using standard software development practices
• Create website layout/user interface by using standard HTML/CSS practices
• Integrate data from various back-end services and databases
• Gather and refine specifications and requirements based on technical needs
• Create and maintain software documentation
Requirements
• Expertise in web programming
• Working experience in at least one of the following:
1. Django-Python (Opening: 1)
2. Drupal (Opening: 1)
• In-depth knowledge of modern HTML/CSS and JavaScript
• Good understanding of how web applications work including security, session
management, and best development practices
• Adequate knowledge of relational database systems, Object Oriented Programming and
web application development
• Good problem diagnosis and creative problem solving skills
• Ability to work and thrive in a fast-paced and rapid learning environment
Revive pythonFlu package for OpenFOAM
(Mentor: Prof. Prabhu, Prof. Shiva, Openings: 1, Honorarium: 25000)
pythonFlu is a Python interface to OpenFOAM (http://pythonflu.wikidot.com/). This currently supports only the older OpenFOAM versions. This project seeks to revive this package and support the latest version of OpenFOAM.
Technologies: C++, Python and SWIG
Mapping Analytics from Virtual lab to edX
(Mentor: Pushpdeep, Rupak, Openings: 2, Honorarium: 20000 per person)
Skills: Django, Javascript, HTML
Problem Statement: At present the virtual labs has very less to negligible user analytics. The new Virtual labs are integrated within edX. However, the analytics from the embedded Virtual labs are not taken up by the edX platform. Thereby, critically missing on the important usp of the edX ie. Analytics.
Challenge is to improve the user analytics of Virtual Labs and map this data into edX analytics framework to generate the usage data for the performed Virtual lab.
Continuous integration for Virtual Labs
(Mentor: Pushpdeep, Openings: 1, Honorarium: 20000 per person)
Virtual lab has started a new community based virtual lab development initiative. At present the team requires automation in lab source code testing and hosting process using git. Looking for an engineer who can help in automation of the Virtual lab testing and deployment to the development and production server using Git/GitLab CE
Requirements: Git, PHP, PostgreSQL , RESTful.
Establishing P2P communication on edX mobile client
(Mentor: Pushpdeep , Rupak. Openings: 2, Honorarium: 50000 per person)
Skills: Java, Android, Django, Python
Problem Statement: An edu-tech platform easy to use for learning, sharing data (user analytics, videos, coursework, annotations etc) with & without internet connectivity. Easy to use & configure, Easy to monitor
Looking for a solution on edX platform:
Limitations:
With edX communication between server and client possible only through internet.
Peer to peer data sharing not possible
Challenge
Challenge is to find a solution allowing offline connectivity & peer to peer connectivity of the edX clients to share the coursework data, videos, analytics and so on. To engineer edX’s mobile application to share the data over wifi via P2P/mesh protocols.
Techs: using P2P mesh networks or similar.
To Create Dynamic Syllabus Matrix for Virtual Labs Community portal
(Mentor: Pushpdeep. Openings: 1, Honorarium: 40000)
Skills: Database
Problem statement: The New community based virtual labs development requires the developed labs to be mapped with the University, Disciplines and Semesters. This will help user to choose an experiment to perform as per his choice.
Challenge: to create a web based dynamic syllabus matrix, which can be used for searching the experiments. This results will also be mapped to know the current development status of the virtual labs and if it's deployed and live.
Image Processing for Healthcare research
(Mentor: Hina, Openings: 1, Honorarium: 40000)
About: The group is working on a couple of medical devices which capture images and help in diagnosis of diseases.
Skills: The person applying for this position should be:
1. Well-versed with image processing algorithms and their implementation in python/ OpenCV.
2. He/ She should be open to research new algorithms
Roles and Responsibilities:
1. Research and Implement image stitching algorithms
2. Quantify image quality
3. Extract Regions of Interest from an image
4. Work along with the optical Engineer, to ensure image quality
5. Optimize code for parallel computing
6. Maintain coding standards and documentation
The FOSSEE project codes are available at: https://github.com/FOSSEE/