FOSSEE Summer Fellowship 2020

Please keep visiting this page for updates
Last updated on 07 January 2020


  • The registration for FOSSEE Summer Fellowship 2020 starts on 1 January 2020.
  • The link for registration is available here.
  • The complete list of projects/topics under the FOSSEE Summer Fellowship 2020 is listed here.

Click here to know the important dates.

The Shortlisting Stage - Python Test will be open from 15th January, 2020.

  • Technical Requirements:

    Python, Basic Unix commands
  • Procedure:

  • The test will only be available starting from Wednesday, 15th January, 2020, 12:00 PM to Tuesday, 25th February, 2020, 23:59 PM

    1. Go to
    2. Click on New User - Sign Up Button and register using the same Email ID as used here
    3. In the Search Course Text box, Type in fsf2020 and click on Search button
    4. You will be able to see the course “FOSSEE PYTHON FELLOWSHIP 2020
    5. Click on the Enroll button beside the Course Name
    6. Click on the Start Button
    7. On the Course Modules Details Page, click on Start beside the Shortlisting stage - Python Test Module.
    8. On the Module Page, you can start the test by clicking on Green Start Button

    Important Note:

    1. The test can be taken at any time/day between 15-01-2020, 12:00 PM and 25-02-2020, 23:59 PM
    2. The test has a duration of 45 minutes
    3. The test consists of 5 Questions
    4. Each Question is a Coding Question which you have to answer using Python Code.
    5. Do not attempt to copy, cheat or Google your answers as all submissions are recorded and validated.
    6. The test can only be attempted once, candidates will not be allowed to attempt the Quiz more than once under any circumstances
    7. The Quiz is completely online and hence you are requested to attempt the Quiz while in a comfortable place with good Internet Connection (Issues arising due to Bad Internet Connection will not be entertained)
  • Evaluation Criteria :

    1. Successfully passing the FOSSEE Fellowship Python Test
  • Result Of Shortlisting:

    1. After completing the Python Test, Click Here. Log In (in case you have logged out earlier)
    2. Check the Grade (below FOSSEE PYTHON FELLOWSHIP 2020) that you have received.
    3. If it mentions Passed, you can immediately start attempting any one of the Screening Tasks mentioned below

List of Screening Tasks

Please note that only those candidates who have Passed the Shortlisting Python Quiz are supposed to attempt Any One of the following Screening Tasks:

Task Description:

Create a Room Slot Booking Django Project that does the following;

  1. Authenticate the user

    1. Allow new users to sign up

    2. Allow existing users to sign in

  2. Users are of two types: Room Manager & Customer.

  3. Room Manager should be able to define the number of Rooms available.

  4. A Room Manager can define the Time Slots for which a Room is available every day.

  5. Time slots are constantly recurring.

  6. A Customer can book a Room and a corresponding Time Slot, once booked, the Room cannot be booked by another Customer for that Time Slot.

  7. Allow only an authenticated user to Book or set Rooms

  8. A Customer should only be able to book a Room ‘x’ days in advance. Room Manager should be able to define the number of days ‘x’.

  9. Only Room Manager can add, delete or change his own number of Rooms and Time Slots.

  10. A Customer should be able to view and delete only his own bookings

  11. Room Manager should be able to view a summary of all bookings, occupancies and occupant customer details.

  12. The customer should be able to see all of his own (past and future) bookings, occupancies and room manager.

  13. Write Test Cases for your Django App.

  14. Bonus Points for creating API endpoints for User management, Rooms, Time Slots, and corresponding Bookings.

Technologies/Libraries to use:

  1. Django

  2. Python (if you want to recap you can take this course )

  3. HTML

  4. Javascript (Optional)

  5. Git

Procedure To Submit:

  1. Create a Github Account or Use your existing one.

  2. Create a New Private Repository in your Github Account for this task. Public/Open repositories will not be considered

  3. Add pyfossee as a collaborator to your project

  4. Commit your code at regular intervals by doing small incremental changes to your code (committing huge blobs of code all at once is not recommended).

  5. The steps in “Description” above are general, minimum and mandatory guidelines. You are free to add well-documented features to your application.

  6. The git repository must contain;

    1. A file called requirements.txt that lists all the libraries (including Django) and modules/plugins and their versions.

    2. A README file containing clear documentation on how to install dependencies, setup and run the project and run tests.

  7. You are not allowed to use pre-built third-party Django Apps (except Django REST Framework).


  1. Availability, Accuracy, and Clarity of Documentation.

  2. Quality and Extent of Test Cases.

  3. Quality of Code.

  4. Adherence to Coding Standards (For example - Code must be Pythonic and follow PEP8 standards).

  5. The User Experience and Flow (please note the difference between UI and UX).


  1. If two or more submissions are found to be plagiarised all such submissions will not be considered for the fellowship and barred from future fellowship

  2. Public/Open repositories will not be considered

Description of Task:

  1. Develop a desktop application that will take inputs for four different categories (modules).

  2. GUI shall have a spreadsheet, Load Inputs, Validate and Submit buttons, message box to display warning messages if the user gives a bad value.

  3. A spreadsheet of different modules should be opened in different tabs of the same window.

  4. Based on the selected module corresponding header row shall be displayed in spreadsheet GUI. Details of header rows, with sample input values for each module, are given in resources.

    1. For example You can develop UI with four tabs, one for each module, which has respective header rows. (Checkout QTableWidget, QStakedWidget, QTabWidget of PyQt5 for GUI design)

  5. “Load Inputs” button shall prompt for selecting CSV/xlxs file, which will populate the spreadsheet. Also, Users can fill data manually in each row.

  6. The clicking of the “Validate” button should validate the data and a suitable error message for bad values should be displayed in the message box.

    1. Required validators are:

    2. All cells other than headers should only take numerical inputs.

    3. Headers should not be editable.

    4. ID column shall be unique, i.e., ID number should not be repeated

  7. Once the user submits the data by clicking on the “Submit” button, it should create a new text file for each row. This text file shall be a dictionary with header value as key and cell value as value.

    1. Text files can be saved in the working folder or you can take folder location from the user.

  8. Text files shall be saved as Modulename_ID. For example, if the user submits fin plate inputs, the first row will be saved as FinPlate_1 automatically, i.e., the user does not have to specify the file name for each row.

  9. An easy to use, user-friendly and clean looking GUI application would help the user to quickly adapt to the application.

  10. Create an installer (Windows or Ubuntu) for your application.

Technical requirements: Proficiency in Python, OOP, GUI (PyQt5), Git


  1. The format of the spreadsheet

  2. Sample text files


  1. Create a Github Account or Use your existing one

  2. Create a new private repository in your Github Account for this task named fsf_2020_screening_task and add osdag-admin profile as a collaborator

For Fellowship in eSim Software Development(using C and Python), visit

Contact Details:

In case of any queries, please check relevant task for contact details, in case there is no contact provided within the task or in case of general queries please drop us an email on info[at]fossee[dot]in

Sponsored by:
National Mission on Education through ICT
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Creative Commons License