When KTBYTE started teaching computer science in 2013-2014, few friends & parents had heard of coding classes for kids. Now, and especially after COVID-19, the classes are ubiquitous. Unfortunately, the explosion in choice hasn’t been met with a growth in quality. Often kids coding classes today are nothing less than elaborate paint by number exercises, except with computer code instead of paint and canvas:
– Instructors without any computer science knowledge
– Projects that require no problem solving
– No reinforcement or progression, leaving most students dazed when exposed to homework for the first time
– Syntax and keywords with no understanding of WHY they exist, a buzzword soup, if you will
It’s no surprise that when students finish these courses, they are often left not much better off than they began. They become settled in among a sea of peers who have all done some Scratch, or made a cliche flappy bird, or some other standardized app. So coding becomes something they enter and the leave, and the ‘real computer stuff’ remains elusive and out of reach.
As a parent, this is so frustrating. We know that jobs, economies, and societies rely more and more on code. Not only that, but kids driven by curiosity and the thirst for knowledge, and they are surrounded by increasing complexity of systems and social issues: Big Data, Social Media, AI, Self Driving Cars, Tech companies, Cryptocurrencies, Cyber Security. Back when we were children, it was okay to just pass off some of this stuff as “too complicated, don’t worry about it”. In this day and age, understanding every day’s front page news involves an underlying ecosystem of algorithms, of code, and of the decisions made by them or about them.
So it’s vital to dispel the myths about programming, about computer science, and about how to teach them to kids effectively.
Myth 1: It doesn’t matter whether the teacher has studied computer science.
This may seem obvious, but after all, we don’t need a physics researcher to teach kids high school physics. Why any different here? Well, it turns out CS without this experience is a bit more like learning Violin from someone who doesn’t play, or french from someone who doesn’t speak:
A. We wants kids to benefit from learning CS long term, rather than just to ace the next test. A teacher who has studied CS conveys not only the subject matter, but also what it feels like to be proficient in the problem solving process.
B. Computer science is in actuality a type of “discrete math”, oftentimes with a long history in university math departments rather than engineering schools. The ‘aha’ moment for computers comes from a deep understanding of how information is stored and manipulated, regardless of the current technologies or tools. The experience of knowing how all computer systems can be connected cannot be conveyed by a teacher who picks it up for a year or two.
C. A good CS instructor will know if your child is best suited for higher (or lower) level material, without needing to give out a standardized test or relying on age as a crude proxy. This ensures the learning process is neither effortless nor impossible, always giving a proper challenge.
One way we sometimes hear this myth is: “Oh, it’s a 1 on 1 class, it must be good!” While certainly there are downsides in being in a class where the instructor never learns your name, a good instructor paired with similar student peers is the best combination.
Myth 2: The best class teaches with X programming language and Y tools
This doesn’t mean that programming languages and tools are meaningless. Just ask yourself these two questions:
A. What languages will my child need to learn in the future, such as Java for the US AP Computer Science Exam, or either Java/C++ for the USA Computing Olympiad (USACO)?
B. Is the language a professional programming language, allowing students to explore both the features and pitfalls that come with them? Here, there is a range of options. To use a bicycle analogy, there are tricycles, balance bicycles, and full bicycles. Tricycles are educational-only languages such as Scratch, which often behave completely differently from professional languages (you can’t fall over, you can’t make syntax errors). Balance bicycles, without pedals, are akin to block environments such as Java Blocks or pyBlocks (you can make mistakes like syntax errors, but it’s a bit easier than a full bicycle). Then there are professional programming languages such as Java, C++, etc. Like most bike shops, a computer scientist would generally discourage the educational-only languages for the committed learner.
Instead of the language, it’s important to ask how the instructors measure student progress and competency. We recommend asking if assignments come with grades, and whether progression yield tangible results. Ask to look at some of the assignments, and ask to see how students will get help if they get stuck on problems. If possible, find a friend who took those classes and ask if they have done projects on their own after class. Often, students with a strong foundation will start learning additional languages and tools on their own for fun after a year or two of courses.
Myth 3: “Computer Science” is too hard, and best left until high school or college
We really believe the opposite is true, that intro computer science is much better taken significantly before college than in college. So when picking a class, find one with a strong history of students out-performing peers as early as middle school.
Take a canonical student who learns early, and call her “Jane”. Jane starts learning CS in middle school at the age of 11 in USA grade 6. It’s both fun and easy for her, and the classes she takes builds progressively. By the age of 12 she has a good understanding of the basic syntax of at least one language, and she has completed dozens of assignments demonstrating that basic mastery. By age 13, Jane knows more CS than the typical high school student, even among schools with AP computer science classes.
The great part about Jane’s journey is that when she enters high school at age 14, she has so much more choice and freedom than her peers. In a world where college admissions pressure has so many Sophomores and Juniors scrambling to build portfolios of extra-curriculars, Jane has it easy. She can apply her existing skills into leadership positions in STEM clubs, or try nationally ranking research or algorithmic competitions. She can also volunteer at some local companies using her tech skills, or pick up some professional software engineering tutorials in her spare time. She can make humanities or arts projects with a blend of digital innovation, or she can simply use her stronger comfort in tech to speed up her classwork and homework.
When College finally comes, Jane may decide to be ahead of the pack and major in Computer Science, but equally as well, Jane may choose to enter an adjacent field of informatics , or simply apply her tech skills in any field, be it technical in nature or otherwise. She skips or breezes through the required programming classes if she choose a STEM major, or she builds research experiences in the humanities that are given only to those with technical experience.
We found that a large fraction of our students who started like Jane did got into a top 20 university and an abundance of choice when it came to internships soon after. They did this by starting to learn computer science, not just coding, in elementary and middle school.
In conclusion, when searching for a computer science or coding class for kids, you want instructors with CS experience, a rigorous curriculum with the opportunity for students to test themselves on graded assignments, and a history of bringing students progressively up to college level material.