Teaching programming for all seems like a difficult problem to solve. As a computer science student, I see how programming is slowly becoming part of many fields. I often assist my friends in their programming homework. Often, I’m surprised by the large number of careers that require programming now. Recently I assisted a friend who’s major is speech therapy in creating an NLP neural network to classify Japanese words into different categories. Programming is certainly becoming a new sort of literacy.
There seem to be two problems with CS4All program. The first is finding teachers to be part of the program. The problem with the current approach is that people in charge want change now. This may be an effect of short-term leadership in the US. Mayors and presidents want to see change within their term. However, a complete overhaul of the education system requires long-term planning. The first step should happen at the top, in colleges. The first step is to include a CS program for all students at the college level. This is certainly more achievable and would only require a couple of new classes to be added at each university. The effect of this would be that in a couple years, all teachers will have some CS education. This would eventually make it possible to adopt a CS program at every school at the K-12 level. This would take some time for it to have the desired effect, but it would greatly reduce the cost of the program and make it an achievable goal.
The second problem is the claim that there is a two-hump division of people into two categories: those who can program and those who can’t. To that I’ll say that we already see something similar in school. Certainly, there are kids who can’t do well in math no matter how hard they try. This doesn’t mean that math shouldn’t be part of the core curriculum at school. Other subjects will also have students that perform better than others. Still, all benefit from a broad education.
The next issue is, how should a K-12 CS problem look like? Personally, I’m not a big fan of visual programming languages like scratch and LabVIEW. However, scratch is almost a standard now used to teach kids how to program. Some research should be done to determine whether these systems are effective. Personally, I believe a better approach would be to create a high-level language with a visual element to it. Some ideas are: a game where you pass different stages by solving a small programming exercise (with a small plot and nice visuals attached to it), teaching in a very high-level programming language where you can create simple games, or simply teaching python at a very basic level. Again, these decisions should be guided by research.
I believe having a CS educated world is possible and beneficial to all. It will take a long time and a lot of effort, but eventually we can create a more educated world.