PyDSA

MentorAMiT Kumar (aktech)
Project Websitepydsa.github.io
Project Repositoryhttps://github.com/pydsa/pydsa
Suitable for Beginners?yes
Tagspython algorithms data structure django flask HTML CSS Javascript
Stateaccepted
Applications (1st Choice)8 (8 submitted | 0 in-progress)
Applications (2nd Choice)7 (7 submitted | 0 in-progress)
Code of Conducthttps://github.com/pydsa/pydsa/wiki/Code-of-Conduct
License

Project Description

PyDSA is an Open Source Python Data Structure and Algorithms Library for Educational purpose.

The projects aims to serve as an educational tool for the beginners learning python, that is my target audience, they will easily be able to see the implementation of various common Data Structures and Algorithms and compare their performance like say for e.g. comparing bubble sort and heapsort. The Goal of the project is to become a full-featured algorithms & Data structure educational tool, while keeping the code as simple as possible in order to be comprehensible and easily extensible & keep the entry barrier low to encourage open source contribution by beginners learning Python. PyDSA is written entirely in Python and does not require any external libraries.

Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Students working on this project in summer will learn how to write human readable code (by that I mean writing code which beginners can understand), Test driven development and writing reusable code.

PyDSA Web Application

The Project also involves writing the django/flask web application to provide all these features with a nice User interface. We straightway give the sort function to someone new to a language, without bothering him with the background details, It’s very important to let them know how that sort function works under the hood!

For motivation of web application you can have a look at these websites:

Note: Feel free to suggest your own Ideas.

Important Links

Project's Requirements

Tasks And Features

Comprehensive List of feature

Links:

Example Features

  • Suffix Array
  • Knuth-Morris-Pratt Algorithm (KMP)
  • Rabin-Karp Algorithm
  • Tries
  • Depth First Traversal of a graph
  • Breadth First Traversal of a graph
  • Dijkstra's Algorithm
  • Binary Indexed Tree
  • Segment Tree (with lazy propagation)
  • Persistent Segment Tree,
  • Z algorithm
  • Floyd Warshall Algorithm
  • Sparse Table(RMQ)
  • Binary Search
  • Quicksort
  • Merge Sort
  • Heap / Priority Queue / Heapsort
  • Modular Multiplicative Inverse
  • Suffix Automaton
  • Lowest Common Ancestor
  • Counting Inversions
  • Euclid's Extended Algorithm

and a lot more feature to be implemented, for more comprehensive list see the links of issues above.

Comments

You must be logged in to comment on this project.


AMiT Kumar, Tuesday, February 2, 14:16 UTC

Thanks a lot for the suggestions, I really appreciate that. I have added that write up in the project description & updated the tags as well.


Laura RGSoC, Tuesday, February 2, 13:13 UTC

Thanks for the quick reply.
I think, especially the extra information you gave about it being test-driven and creating the user-interface for the features on the Django website might be of interest for students applying, so it's great you mentioned that as well.
I'm not going to lie, we usually really prefer having projects that have a slightly bigger reach / that are more established, especially because we feel it is better for the students to contribute to a project that already has a workflow and a few contributors. But we can give it a try!


AMiT Kumar, Tuesday, February 2, 12:16 UTC

Hi Laura,
Thanks for the reply. The projects aims to serve as an educational tool for the beginners learning python, that is my target audience, they will easily be able to see the implementation of various common Data Structures and Algorithms and compare their performance like say for e.g. comparing bubble sort and heapsort. The Goal of the project is to become a full-featured algorithms & Data structure educational tool, while keeping the code as simple as possible in order to be comprehensible and easily extensible & keep the entry barrier low to encourage open source contribution by beginners learning Python. PyDSA is written entirely in Python and does not require any external libraries.

Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Students working on this project in summer will learn how to write human readable code (by that I mean writing code which beginners can understand), Test driven development and writing reusable code. The Project also involves writing the django website to provide all these features with a nice User interface. We straightway give the sort function to someone new to a language, without bothering him with the background details, It’s very important to let them know how that sort function works under the hood!


Laura RGSoC, Tuesday, February 2, 11:04 UTC

Hi AMiT Kumar,
Sorry for getting back to you so late. No, we don't just accept ruby projects, however we were wondering about the use case of your project. Where is it used? When you speak about "educational purposes": who is the target audience?
We feel like there's little project management tasks involved for the students here, and like it's a "simple" implementation of algorithms — do you have any more detail that could help us understand what the project will be like for the students during the summer?


AMiT Kumar, Saturday, January 30, 13:55 UTC

It seems like only ruby projects are accepted?