Learning By Algorithm
We can be hard on ourselves when we fail to remember every bit of a book we’ve read or commit some fallacy and fall short of being perfectly rational. When these expectations aren’t met it can feel frustrating and defeating, especially in the face of an automation work-pocalypse where the rival can remember infinitely more and is the literal embodiment of rationality reified. More and more we want to be able to plug into the internet and wake up with the instantaneous downloads that our computers so easily install: “I know Kung Fu”.
But some of the learning process and computer functions are much more similar than might seem at first glance.
Sorting Learnings 🐝
When we take a course or go to school we learn material in a particular order. That order is dictated either by a textbook or curricula determined by, perhaps, a teacher. Those orderings are generally built from the topics’ inherent characteristics and structure. A computer science textbook may start off with types, then move to data structures, then algorithms…These orderings are incredibly useful in terms of reflecting the nature of the knowledge being dissiminated. But the thing is, there are better orderings for learning.
I came across a post I really resonated with that mentioned blurry to sharp learning. The general idea is that rather than trying to build up a high-resolution understanding of some topic up-front, one should instead move from generalities, and perhaps analogies, toward more granular detail: To move from a blurry understanding to a sharp understanding.
I once heard a great pragmatic [suggestion]1 for students, which is to in the first week of class skim through the entire syllabus and re-order the material over the semester by descending difficulty for you; hard material first, easy material last. By skimming everything in the beginning, you can gain a general sense of where all the material is going (blurry) and develop a more robust understanding throughout the semester (sharp). This also has the added bonus of giving you more time to digest the difficult bits, if need be.
This advice is useful beyond the bounds of the classroom: Read the encyclopedia. Read lots of summaries and tables-of-contents. Find ELI5 questions for new and unfamiliar topics. Get a lay of the land and don’t be afraid to read books partially.
Sorting Algorithms 🐝
The suggestion to re-order school syllabi seems to reveal some entrenched misconceptions: We should digest knowledge by its conceptual ordering. Computers inhale streams of data in its original form, so why should our learning be any different? Learning should be as simple, seamless, and orderly as the computers’ ingesting of our data.
But both computer calculation and human understanding are really quite a bit different than that. When a computer does anything complicated it goes through many steps to process and perform said calculation. Data may be transformed many times over for even a single procedure (see ETL) and performing even “simple” functions like search can be complicated processes made up of other processes, like sort.
Let’s think about the computer science behind a simple sort for a second. Say your computer is sorting a list alphabetically. You might just go through the list one by one and add them to another list in order. I won’t go into the weeds here, but there are much faster techniques: A very common strategy is something called “divide and conquer”.
For example, on the first passover in our alpha-sort we might start throwing entries into one of two lists a-m and n-z. Then we’ll run through each of those lists further dividing them into a-f, h-m, n-s, and t-z. We would repeat this until we have run through each letter, and then continue the same process for the subsequent letters, and so on and so forth until we have an alphabetically ordered list.
It’s almost as if with each iteration, the computer’s understanding of the final list goes from blurry to sharp.