The Algorithms

Ideas List for GSOC’21

Webapp for learning algorithms

Detailed Description: We have a lot of algorithms in 20+ programming languages in our GitHub repositories, but they are not properly organised and discoverability is not good. For a beginner, it becomes difficult to learn algorithms and their implementation. For a person who is not familiar with Git or Github, this can become a hurdle in learning. So we want to build an interactive web app where students can explore various algorithms and learn their implementation in the programming language of their choice. The code for these algorithms and their plain text explanation should be fetched automatically from Github Repos and rendered in a readable form. Further, this plain text explanation can also be multilingual.

Expected outcomes:

  • An interactive multilingual web app to explore and learn algorithms in the programming language of their choice.

Skills Required: HTML, CSS, Javascript, React, Next.js

Difficulty: Easy

Potential Mentors:

  1. Malte Jürgens (Gitter: maltejur)
  2. David Leal (Gitter: Panquesito7)
  3. Anshul Malik (Gitter: anshulmalikce)
  4. Chetan Kaushik (Gitter: dynamitechetan)

The Algorithms CMS - Frontend

Detailed Description: Currently, the user has to clone a repository and then commit new files on it to add a new algorithm. For someone who is not familiar with git but is well-versed in algorithms, it would be difficult to contribute. The CMS will present a web application to the users where they can write code for the new algorithm and add plain text explanations.

Expected outcomes:

  • A CMS that will serve as an interface to add algorithms.
  • Capability to add programming language implementation.
  • Capability to add plain text translation.

Skills Required: React, Javascript, CSS

Difficulty: Medium

Potential Mentors:

  1. Malte Jürgens (Gitter: maltejur)
  2. David Leal (Gitter: Panquesito7)

Merlin Extension

Detailed Description: Currently, if you want to apply for a job, you visit the career page of the job. Then, you fill the form with the same details you have filled for other jobs that you have applied for. Sometimes, Google Chrome helps fill the form by autofill data, but this is not always possible. The forms may ask your Twitter/LinkedIn profile URL and Google Chrome doesn’t save this. In this situation, you visit the desired social page, copy the URL and then paste it on the form. The same happens when skills and experience are filed in the application. In this project, we are trying to make a browser extension that is capable of saving everything and auto-fills the job form or any type of form effectively.

Expected outcomes:

  • A browser extension that stores personal and professional information.
  • Save time for filling out forms by auto-filling almost all the fields.
  • Improve accuracy of auto-fill suggestions.

Skills Required: HTML, CSS, Javascript

Difficulty: Easy

Potential Mentors:

  1. Vishwesh Jainkuiya (Gitter: jainkuniya)
  2. Abhinn Mishra (Gitter: mishraabhinn)

The Algorithms CMS - Backend

Detailed Description: This will be a server to handle the save events from the CMS. This will have a basic authentication and authorisation system. We need to serve APIs for saving new algorithms, editing existing algorithms and moderating the changes. The logic to parse the payload received and commit it to the respective repositories will stay here.

Expected outcomes:

  • A CMS backend that will serve as a data source for the web app.
  • Exposed APIs to save and update blogs.

Skills Required: Python, GitHub API

Difficulty: Medium

Potential Mentors:

  1. Nikhil Kala (Gitter: nikhilkala)
  2. Anup Kumar Panwar (Gitter: anupkumarpanwar)

Algorithms Keeper

Detailed Description: Algorithms Keeper is an automated pull request reviewing bot. It already automates the initial review of Python pull requests; therefore, this project will extend that tool to perform a deeper analysis of proposed changes to code and documentation. The current tool focuses only on Python submissions but TheAlgorithms currently has repositories for 25 programming languages. Work should be done to make useful initial code reviews across multiple programming languages. Automated reviews should be intuitive and self-documenting and should always encourage contributions.

Expected outcomes:

  • Improve automated initial reviews of Python pull requests.
  • Automate initial reviews for other languages.
  • Study of which features (test coverage, self-documenting variable names, type hints, etc.) are most important for project maintainers.
  • Improve sensitivity to the needs of submitters (esp. those learning the language and learning how to contribute to open source).

Skills Required: GitHub Actions, Python

Difficulty: Hard

Potential Mentors:

  1. Dhruv Manilawala (Gitter: dhruvmanila)
  2. Christian Clauss (Gitter: cclauss)

Blog dashboard

Detailed Description: Apart from algorithms, the web app will have a section for technical blogs mostly related to algorithms and scalability. We want to create a dashboard where the user can write blogs in MD format. On saving the blog, the MD file should be committed to the repository on Github, which would then be fetched and rendered in the explore blogs section. This should support multiple languages.

Expected outcomes:

  • A blog section on the website.
  • Dashboard to create blogs.

Skills Required: Javascript, Python, React

Difficulty: Easy

Potential Mentors:

  1. Rohit Gupta (Gitter: r0hit-gupta)
  2. Chetan Kaushik (Gitter: dynamitechetan)

Contributor profile

Detailed Description: Every contributor on the organisation would have a contributor profile on the website. This page should show all the algorithms and blogs added by that user. This would include contributions from both, committing directly to the repo and adding from CMS. A contribution chart should also be displayed on the profile just as it does on Github. This would help to display the top contributors and encourage others to learn and share algorithms.

Expected outcomes:

  • Contributor profile with top charts.
  • Encourage people to contribute and learn more.

Skills Required: React, Github APIs, Javascript, Charts

Difficulty: Easy

Potential Mentors:

  1. Madhav Gaba (Gitter: madhavgaba)
  2. Nikhil Kala (Gitter: nikhilkala)
  3. Anup Kumar Panwar (Gitter: anupkumarpanwar)

Flutter App

Detailed Description: A simple flutter application for The Algorithms. It will help in learning the space and time complexities of various algorithms using spaced repetition and flashcards. Users will be able to play quizzes, learn algorithms and read blogs. Every day the user should get a notification for the algorithm of the day and a streak will be maintained to keep track of all the algorithms the user has learned.

Expected outcomes:

  • Flutter app for The Algorithms.
  • Learn a new algorithm everyday

Skills Required: Flutter

Difficulty: Easy

Potential Mentors:

  1. Rohit Gupta (Gitter: r0hit-gupta)
  2. Rahul Kathuriya (Gitter: RahulKathuria)