As the inaugural post, I would love nothing more than to talk a bit about teaching coding/programming /computer science to kids. It’s a topic dear to my heart as I have also recently begun a sincere attempt to navigate this treacherous terrain, and it’s actually really fascinating to experience firsthand what works and what does not.
With the flush of cash from recent tech-IPO’s, the subject is gaining a lot of momentum– in Silicon Valley, the White House (oh yeah, see Code Summer), among various CS educators. Sometimes it is hyped and sold as the new American dream (re: FB’s $100bn valuation), but mostly the attention is deserved and direly needed. CS is going to be a core part of the future: it will continue to evolve & intersect with multiple dimensions of our lives. Yet we seem to be failing pretty badly at getting with the times.
It is worth taking a moment to marvel at just how large the structural gap is in the current education institutions.
- Out of the c.1,500 schools in California offering high-school level English, only 119 schools offer computer programming (and only 68 of them offer AP Computer CS)
- Already precariously low, AP CS enrollment rate decreased 35% from 2009 to 2005
- Similarly, even though CS enrollment in colleges has rebounded from the dotcom bubble burst, it is still curiously underwhelming vs levels in 1998 to 2000Newly enrolled/declared college CS majors by year
- In contrast to all of this, growth of CS jobs (from 2008 to 2018) is expected to outpace avg growth of all jobs by c.11% (21% growth vs. 10%)
We don’t need to be a genius to see the imbalance here; gratefully, lots of very smart people are trying to tackle the problem from all angles. But there are probably a few structural problems happening at the very level of the schools/classrooms that need to addressed before any effort can have widespread effect
- There are not enough teachers. CS is an inherently difficult subject that benefits greatly from good, LIVE instructors. Many of the fundamental aspects of CS are abstract, and the practice of it requires lots of guided iteration to truly become proficient. The problem is there are simply not enough qualified instructors to go around, not to mention that there is not a real certification process. It is a subject that requires a lot of discipline, and lots of young students are just not able to do that without supervision.
- What most schools call computing education is technology literacy. Many schools are focused on how to use computers (and call it computing education), but not computer science, a subject whose logical basis is different from mastering pieces of software.
- CS is taught too late. CS is often perceived as an advanced subject reserved for “later” in the educational path, when in fact its mastery requires an earlier exposure. At its core, teaching CS is just like teaching math or grammar: you can expect very few to master Shakespeare (or even try to) if you don’t even teach them the alphabet till college. Similarly, just because only a handful might become professional math whizzes or novelists, it does not mean that basic mathematical or language skills are not useful or needed. There are many basic concepts in its logic that can and should be taught at a younger age.
Simply based on my slim experience of learning to to program so far, I can already see a few philosophical and practical problems with attempts to salvage CS education today- inside and outside of the classroom. More on that later.