Algorithms for All is an accessible guide to algorithms written for anyone who wants to understand algorithms a little better, regardless of whether they have experience with software development or computer science! Unlike the numerous guides to algorithms which already exist on the web, this guide does not seek to explore algorithms solely from the perspective of helping others pass coding interviews. Instead this guide (and its humble author) suggest that algorithms are:
- Useful in understanding the ways we solve problems.
- Useful in understanding the ways computers can be used to solve problems and how these processes differ. This helps us to have a better grasp of how our technology works so we are better equipped to have a voice in the development of accessible and ethical technologies.
- Aren’t always a great indicator of whether or not someone will make an excellent programmer (especially if the job in question doesn’t require the use of algorithms).
- Are sometimes used as a gate keeping device in combination with deeply flawed interviewing processes in ways that can lead to the unnecessary and harmful exclusion of diverse engineers from tech and tech-adjacent fields.
- Are none-the-less very useful and not to blame for the hazardous ways they may be deployed within the tech industry!
Instead of starting from the point of view “algorithms are hard but you have to learn them” or “algorithms are only useful for computer scientists” this guide starts from the perspective of “what if algorithmic thinking was all around us and we just needed to put it into words instead of math?” In this guide, we explore algorithmic thinking processes with real world examples, breaking down the components and steps of each algorithm into pseudocode and examining the algorithm using a variety of visualizations. We provide creative resources from a diverse network of programmers for those who want to learn more about a specific algorithm. We also include code samples and Big O complexity information. This guide is open source and created for those who are engaged in self-study as well as educators who might find this material useful in their courses. If you are interested in contributing to this guide or have a specific request, please get in touch.
About the Author
Mirabelle Jones is a self-taught programmer from Oakland currently living in Copenhagen, Denmark. They have worked as a designer and developer alongside their work as an interactive artist, educator and researcher for the past 20 years. Formerly, they served as the Senior Designer / Developer at Meow Wolf. Currently they are an Artist-in-Residence at Catch Center for Art, Design, and Technology, an instructor at Codame Art & Tech and HackadayU, and a researcher at the University of Copenhagen in AI and Ethics. They possess an MFA in Book Art & Creative Writing and a BA in Language Arts. You can view their portfolio at: MirabelleJones.com
This guide was created as part of a Mini Retreat at The Recurse Center in Fall 2020 and would not exist without the hard work of the Recurse Center’s fearless organizers who created Virtual Recurse Center in response to the challenges of COVID19. I want to also thank everyone who offered kind words, suggestions, or tuned me into Hungarian Folk Dance visualizations of Bubble Sort during the week.
The guide will be incorporated into an educational toolkit that is being created during an Artist-in-Residency at Catch Center for Art, Design and Technology in collaboration with feral labs and co-funded by the Creative Europe Programme of the European Union for Fall 2020.