After reading the articles, do you believe that coding is the new literacy? Should everyone be exposed or required to take a computer science or coding class?
I’m not convinced by any of the arguments that coding is the new literacy, but I do believe that it is necessary for many people to learn how to write it. I’ll never see it as more than a technical skill, and calling it the “new literacy” is pretentious. I can understand many of the points that the articles bring up, such as the fact that coding introduces an entirely different way of thinking about everyday problems and the applications that code can provide. If computer science is only taught as “this is how you code” versus “this is what code can do”, then the stereotype of how boring computer science is will only be perpetuated. Algorithmic thinking can lead to some interesting problem solving approaches, and teaching children that code is powerful might entice them to try learning some code on their own. That said, the fundamentals of education, reading and writing, are intended to promote soft skills such as communication. Sure, teaching students how to code might develop a specific problem-solving mindset for translating real-world problems to code. The problem with saying that everyone should be excited about computer science can only cite easy examples of how code can make you rich and successful by solving non-problems like inventing a new social media platform or building an app or a self-driving car that only rich people and companies can afford. Consider more real problems; the article above even states that healthcare is a far-off application of coding. Social security will be bankrupt within the next few decades; please, code that problem away. The current landscape of the tech industry reminds me of Laputa from Gulliver’s Travels; an isolated, floating island in the sky where scientists make useless inventions while real problems run rampant on the ground below.
If computer science is to become a norm in schools, then the ideas of what code should be used for need to change. Like a delusional art student thinking that the quality of their work will make them successful, students who learn only to code simple apps with simple and superfluous usecases will only follow the examples of the tech entrepreneurs who made it to the top by some stroke of luck or unattainable genius. Too many times have I heard “Well, Bill Gates was a dropout!” seriously used as an argument. Early computer science education needs to focus on real-world problems and how they can be addressed through coding. The students need to learn how to think, not just how to code. In its current form, however, I don’t believe that computer science education can be used for the benefit of all.
What are the arguments for and against introducing everyone to computing or programming? What challenges will schools face as this CS4All push moves forward?
The main arguments in favor of teaching students to code revolve around the practicality of having that skillset. It doesn’t take much more than a Google search to see that the number of computer science-related jobs is growing rapidly. Coding is rapidly pervading our world in ways that many people might not have thought were possible. In a world where nearly everyone interacts with technology on a daily basis, shouldn’t we learn what the technology is actually doing under the hood? Computer science as a skill teaches students to break down problems into a series of steps, which is an important skill to have; it’s not problem-solving per se — it’s a new medium in which problems can be solved. Most of the arguments against the CS4All style movements have to do with the flawed thinking of the ideas behind it. Just because we have a good understanding of computers now does not imply that we know how to teach it in classrooms.
I’ve seen this come up many times in education before. In high school, I wrote a paper against the implementation of Common Core education because of how flawed it has been for the states around my hometown, Missouri and Kansas. The point of Common Core was to “bridge the gap” (sound familiar?) by teaching public school students more practical skills that they’ll need for their jobs. In reality, the implementation actually made this divide worse; to summarize my opinion, Common Core doesn’t teach how to think; it teaches what to think, just like classroom-style coding lessons. To move up in your career, you need to be articulate and understand how to think, not know how to solve math problems a single, specific way that lets you work an entry-level job. Teaching kids to code might help them understand the world around us better, but it won’t make them into the hackers that the tech industry would like them to be. Here lies the biggest challenge for the CS4All push: it’s impossible to teach every child a new way of thinking and overhaul the entire public education system. Schools will face pressure from these movements, but only the well-funded schools will benefit.
How should computer science fit into a typical K-12 curriculum? Is it an elective or a requirement? Does it replace existing subjects or is it an addition? What exactly should be taught in this CS4All curriculum? Is this computational thinking? programming? logic? computer literacy?
Not everyone wants to learn to code, but I don’t believe that teaching computer science should necessarily be mandatory for all students. I would personally leave it as an elective. These classes should focus on the logic of computation and the basics of coding in the early years and on case studies and how code is used to solve them in the later years. Sure, at some point you have to pick a language to teach, but it’s more important that students learn the translation of real-world logic to code. Needing to know a process such as how to invert a binary tree, for example, is only helpful for a technical or whiteboard interview with a terribly old-fashioned interviewer. Holistically, all students taking this course should be exposed to computational thinking and computer literacy more than any other aspects of computer science.
Can anyone learn to program? Should everyone learn to program? Explain why or why not to both.
I’ve always been under the impression that there are many careers that can be “brute-forced.” That is, if you work hard enough, you can make it in the program. I believe that most engineering disciplines are like this (Yeah, I could have made it as a mechanical engineering major if I’d just worked harder, says the MechE dropout), and many of the aspects of computer science fall under this same category. Beyond simple programming and introductory logic, however, computer science becomes far too abstract for many people. It requires a certain amount of creativity and a way of thinking that many people simply don’t possess or have no desire to attain. A quick look at the two-hump curve would tell you this. The data is fairly simple to read; not everyone can learn how to code.
Not everyone should learn how to code either. The goal of computer science education is to teach students how to solve problems as efficiently as possible. Coding should be a means to an end, not the end itself. There are people who will always find coding boring and have no intent of going into computer science. Pushing these people into jobs they have no desire of working only makes poorly written code more likely. The lucrative salaries aren’t there to say that code monkeys are worth that much. What the tech industry needs is people who know how to solve complex problems in efficient ways, not people who only know how to code.