GSoC'22 Proposal Review - Examples Algorithms

Hello Potential Mentors,

My name is Nathaniel Sullivan and I am a sophomore software engineering student at ASU. I have been interested GSoC for a while because of it’s ability to give students experience and connect them with amazing open source organizations like Processing. My love for coding first started by watching Daniel Shiffman’s coding challenge videos on YouTube and so when I was looking through all of the organizations in GSoC and saw Processing, I knew I had to get involved.

One of the things I noticed early on in programing with p5.js was how nice it was when one of my questions was answered through the examples. Another one of the hardest things for me as I was learning to code was understanding data structures and algorithms. For this reason I would like to propose the creation of a new example section entitled Algorithms. This section would contain a time and space complexity comparison of sorts, the existing examples of Quick Sort and Bubble Sort as well as more sorting algorithms including:

  • Selection Sort
  • Insertion Sort
  • Merge Sort
  • Recursive Sorts
  • Possibility for many more

I believe by creating working examples of these algorithms as well as explaining their relative time and space complexities, p5.js will be able to provide more access to the skills and understanding needed in effective coding.

This is just a start of an idea and I would love any and all feedback on my idea as well as on how to go through with a proposal.

Thank you. I look forward to a response,
Nathaniel Sullivan

1 Like

Algorithms sounds a good idea. I don’t think that sorting algorithms offer much on time difference, they are all more or less the same O(n*log(n)). Their effective implementation is usually dependent on using the right data structure. I don’t know but I suspect that Javascript is not really suitable for optimizing or presenting specific data structures. Time and space requirements are interesting, but it seems to be advanced computer science nowadays and most of processing users are more on practical implementation.

So I would suggest you take a wider set of algorithms and look for algorithms that would be useful in common processing context. Binary search is most likely useful. A sorting algorithm is needed for binary search to work. Also finding if areas (shapes) overlap or if a point is inside an area come up occasionally. I’m sure by looking at posts more can be found.

1 Like

EDIT (April 18, 2022):

The following, which was posted on April 17, 2022, represents my own opinion, however I am not a potential mentor.

That would be a great addition to the existing examples. Once that section is created, others could contribute to it as well.

Sorting algorithms may differ concerning average, best case, and worst case time and space complexity. Regarding time complexity, bubble sort has an average performance of O(n2), a worst case of O(n2), and a best case of O(n). The latter occurs if the array is already sorted. For a quicksort the average time complexity is O(n log n).

See:

Yes, that would provide the new Algorithms section with a great start. With a diversity of examples to emulate, others would likely be motivated to contribute.