Show HN: A coloring book of data structures and algorithms
I'm making a coloring book of data structures and algorithms for programmers and students. So far I have a prototype page for a sorting algorithm (albeit a rather simple one).
Here the Selection Sort coloring pages you can print. https://coderscoloringbook.com/selectionsort
And here is how I colored mine. https://coderscoloringbook.com/selectionsortcolored
A coloring book is not quite enough to teach algorithms on its own, but I really get a lot from visual reinforcement of what I learn from books/lectures.
Do you think having coloring pages like this could be a helpful addition to the usual studying approach of textbooks, lectures and online coding practice?
Or is it just a fun little break from coding without too much educational value?
106 comments
[ 2.5 ms ] story [ 184 ms ] threadI would prefer the colored version of the algorithm, however I would not spend the time to color it myself.
This is my personal opinion.
Even for kids I have doubts. I remember I once talked to an American 12-year old that loved to color books and at that time I found incredible that too: in my european world, coloring books are for pre-schoolers.
Maybe it's just me that I haven't had my coffee yet, but with selection sort, the part about swap needs an easier explanation.
Edit: spelling.
2. ???
3. Color the rest of the algorithm
Somehow it reminds me to The Little Schemer :)
Cheers
I love this trend of using comics to describe technical ideas (which, as far as I can tell, started in earnest with Julia Evans). I think it's a great way to remove some of the scaryness-factor that more serious tomes (like Cormen et al) are associated to. I don't think the niche is nearly reaching oversaturation. I think there is plenty of room for these kinds of books in this space. Personally, however, I probably wouldn't get much value from a book on the very basic algorithms, like selection sort etc. What I really would like is a good description of the algorithms and data structures that are described in more advanced courses, like Fenwick trees or the stuff Erik Demaine talks about in his more advanced presentations.
If you're not aiming for this to be a book for people who're accustomed to the basics, however, and more a book for people who maybe know how to code but who identify themselves more as practitioners than as theorists (meaning they're intimidated or bored by algorithms) then my main reaction is that the thing you've shown so far seems to (1) have a great visual appeal, but (2) suffers in that it does not provide implementations of the algorithms in actual code. If I think back to myself as a beginner, what I probably would have needed help with looking at your thing would have been the translation from the example and little pseudo-code on the left to actual code.
Julia deserves a ton of credit, but I think it's also important to remember whytheluckystiff's "Poignant Guide to Ruby" [1]. Going even farther back, Forrest M Mims' electronics books [2], which I remember being sold in Radio Shacks, get much of their fame and familiarity from being hand-written.
[1]: https://poignant.guide/ [2]: https://www.amazon.com/Getting-Started-Electronics-Forrest-M...
[0] https://www.amazon.com/Cartoon-Guide-Calculus/dp/0061689092
[0] https://www.amazon.com/Cartoon-Guide-Calculus/dp/0061689092
"McCloud" is congruent with "McLuhan", as "Understanding Comics" is congruent with "Understanding Media".
https://en.wikipedia.org/wiki/Understanding_Comics
There are two versions of page 111, with an apology (and an apology for the apology) if you thought the first was offensive.
There is also Illustrating Basic (1977) and Illustrating FORTRAN (1982) by Donald Alcock from Cambridge University Press. [edited to fix publishing dates]
Grokking Algorithms by Aditya Bhargava is something I skim for fun occasionally and this seems like a great complement!
I was playing Human Resource Machine and implemented a linked list in assembly without even realising it. Once I did, I first felt so smart that I had to brag about it, and I also thought, "that wasn't so scary..."
Sacha Chua <http://sachachua.com/blog/> used to do this way earlier than Julia Evans.
No flame though, just wanted to point this out.
https://www.amazon.com/Head-First-JavaScript-Programming-Bra... [0]
I think something like this is critical for persons learning how to code that don't have a strong math background.
Of course they'll need to graduate to more formal methods of learning, but this would help them to get an initial context before the more formal study starts.
I don't think this would be an enormous money maker, just because it would have a very niche audience.
But you might consider having it printed and distributed on Amazon and anywhere else you can easily distribute this in formal/printed book format.
If you want to do it anyway, you might as well get some residual income from it.
I could see people paying $30-40 for a book that teaches all of the major algorithms and data structures in this manner.
EDIT: I'd easily pay $30-40 per student of mine for a book like this. This is the hardest part, I think, of making the leap into programming, grasping the abstract concepts behind algorithms and data structures. Statements, expressions, and language syntax are much easier in comparison.
Also, if you did one that covers hashing, encryption, signing, and key exchange algorithms. That could even be a separate book on integrity and security concepts in programming. And I could see that being another $30-40 maybe even $50 buy.
I think the best way to pitch this is to seasoned programmers, who want a "fun little break from coding" or a conversational item in their cube, etc. If you can also add in coloring for some standard interview questions (coding or otherwise, e.g. tree for missionaries and cannibals or the dripping two eggs problems) it would be a great fun way to study for interviews.
"Excellent sparkline-like graphics from Robert Sedgewick, Algorithms in C (1998)
Sparklines and sparkline-like graphs can also move within complex multivariate spaces, as in these 9-step sequential results (reading down the columns) in merge-sorting 5 different types of input files. Four variables and 18,000 numbers are depicted in these small multiples.
https://www.edwardtufte.com/bboard/images/00027o-2539.jpg
Here are the results of 7 sequential passes to sort a 200 element file in bottom-up merge sort:
https://www.edwardtufte.com/bboard/images/00027o-2540.jpg
These merge-sort images above are a bit large in order to accommodate the resolution of a computer screen. But this material can achieve sparkline-resolutions when printed out on paper.
-- Edward Tufte"
[1] https://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=...
[edit: formatting]
[1] Article -- https://bost.ocks.org/mike/algorithms/ [2] Talk -- https://vimeo.com/112319901
https://www.kickstarter.com/projects/youaremyjoy/climate-cha...
For a (much) younger audience, I could see the teacher buying this, but in that breath, they are always looking to not spend a lot (or any) money on supplies, so a $30-40 coloring book for something that they could find a free alternative online isn't worthwhile. But, $1-5 per concept might be worthwhile.
I do, however, love the visualization of your coloring of the page. This could work via writing the book in a visualized "worked example" format, which is how I worked through the data structures course I taught over the summer.
In that light, I can see it being very similar to something like Grokking Algorithms [1], which I did buy because I enjoyed the idea of visualizing the algorithms (for my students and my own edification).
Final note if you went that route is be mindful of colorblind customers and look to include something like a pattern difference as well (maybe angle of coloring the block?).
Overall, I love the idea; my research focus in effective means of conveying concepts to students, so I'd love to stay informed as you work through it and might be tempted to use whatever you tricks you provide as additional exercises when I teach again.
[1] https://www.amazon.com/Grokking-Algorithms-illustrated-progr...
I think your idea about providing colored examples is good and have heard it from a few people now so that's definitely worth looking into.
Also I am red green colorblind so thanks for keeping people like me in mind! I'll have to remember to stay mindful of that.
Cheers
Plus a good friend of mine has written numerous books on educational materials for deaf child, so whenever I talk about CS education, she reminds me to keep these types of disabilities in mind whenever I design new material
> I think your idea about providing colored examples is good and have heard it from a few people now so that's definitely worth looking into
It's something I don't think we have a lot of in CS education currently; a current platform I'm building is solely to provide almost a dozen types of exercises (fill in the blank, explain the code, hell even typing exercises) to give students the practice (I feel) they miss out on.
Coming from a martial art background, any technique we learn, we get to drill more than once and we aren't expected to beat MMA fighters after 1 lesson. I view the brain like any other muscle, in that with practice, you get better. My job as an instructor is to make sure you stay motivated and don't learn the wrong way.
Could you expand on what you mean by "make sure you... don't learn the wrong way"? If you'd rather email me, I'm at levi -at- coderscoloringbook.com.
Cheers!
If you have any suggestions for improvements or content feel to let me know. And I'm always looking for "beta" testers of the book =)
https://en.wikipedia.org/wiki/Butterfly_diagram
http://patentimages.storage.googleapis.com/pages/US5163017-2...
I'd use neon black light reactive crayons, of course! ;)
http://shop-uv.blacklight.com/ultraviolet/Neon-Crayons
It would be kind of like those Penrose tilings coloring books:
http://www.woodenbooks.com/altair/
In this same vein: Machine Learning Flashcards by Chris Albon [1]
[1]: https://machinelearningflashcards.com/
I would have liked to see things more pictorially like instead of boxes with numbers have flowers of differing height or tortoise shells of different sizes. Maybe hands replanting the flowers or tree turtles walking to the correct place.
I've thought about this idea before actually but not really for pedagogical proposes just for fun instead.