“We really are starting from Scratch!” I teased my lab partner in my 11th grade Project Lead the Way Computer Science and Software Engineering class. This class was being piloted at my vocational school to gauge student interest in computer science. My partner and I were tasked with creating a game which would eventually be implemented using the very basic visual programming language Scratch. However, before we could “code” our game, we had to brainstorm. What was the character going to do? What steps were required for the character to complete that task? What potential problems would we encounter if we introduced another character? All of these questions point to a concept critical to not only computer science but our everyday lives in general: problem solving. 

It would have been very easy for my instructor to tell us to play around with Scratch and see what we came up with. After all, we were beginner computer science students who really were starting from scratch. Yet, my instructor did something that all computer science courses should do: emphasize problem solving. In fact, Shane Martin, a Project Lead the Way instructor himself, says that proper computer science education requires “hands-on project based learning that exposes students to a variety of different problems and techniques.” Also, Mehran Sahami, a contributor to the distinguished Association for Computing Machinery, states that problem solving helps students express themselves with “greater precision and clarity” (Sahami).  One thing my experiences with the Project Lead the Way program taught me was that there is a clear distinction between memorizing something and actually understanding it. A student can memorize material for a test but not fully grasp the concepts behind that material. Fundamental computer science education is rooted in understanding basic problem solving concepts that students can apply to all subjects. Therefore, a computer science course that emphasizes problem solving is vital for every student in the K-12 school system. 

The average person often equates computer science with programming. Yes, an intensive study of computer science will contain lots of high level programming. After all, it is computer science. However, the core of computer science revolves around a concept known as computational thinking. Computational thinking is the general concepts that programming languages employ (Stross). From my Scratch experience, the general concept would be the problem solving process in which my partner and I broke down the game step by step. Jeannette Wing, head of the computer science department at Carnegie Mellon University, argues that computational thinking involves three key constructs: Algorithms, Abstraction, and Automation (Stross). All three of these concepts should be exposed to students early on in their schooling.

A common analogy for an algorithm is a recipe. An algorithm contains the ingredients for solving a problem. In the simplest terms, Wing describes an algorithm as a “step by step series of instructions” (Yadav QTD. Wing 33). For example, if you are driving on the interstate and get a flat tire, there are steps you must take to repair the tire. First, you must stop the car. Next, you must locate the spare tire. Thirdly, you might call roadside service or try changing it yourself. In any case, this problem must be broken down into steps to ensure a positive outcome. Otherwise, panic or confusion might ensue. Similarly, elementary students can learn about algorithms by breaking down a simple task such as brushing teeth into a sequence of steps (Yadav et al. 567). Moreover, students in second language classes could use recipes to learn about algorithms (Yadav et al. 567). All of these examples demonstrate that the principle of algorithmic design in computational thinking can apply to all sorts of people and situations. This is critical for the expansion of computer science education in the K-12 school system.

Abstraction is another key component of computational thinking. Abstraction focuses on a broader idea while ignoring a lot of the specific details. According to Barr and Stephenson, it typically involves “generalizing and transferring the problem solving process to similar problems” (Barr et al. 48-54). This has huge benefits in a K-12 school setting because it prepares students for the reality that not every problem is directly solvable. Sometimes methods from one problem must be applied to another problem in order to solve it. Common examples of abstractions include simulations and models (CAS Barefoot 2). For example, a science student could create a simulation to explain the concept of gravity. Likewise, an art student could create a simulation to show how to properly handle clay (CAS Barefoot 2). In essence, students can bring their subjects to life through the power of computing. This leads to the last essential concept in computational thinking: automation. 

After coming up with the algorithm and abstracting the details to see the big picture, the final step is to automate the process. Automation is simply using digital and simulation techniques to mechanize problem solutions (Yadav et al. 567). In my Scratch example, my partner and I broke the problem down into steps, abstracted it in the form of a game, and then automated the game using Scratch. The best part about automation is its ability to engage students and have them visualize what it is they’re learning. Yadav cites NetLogo as having a “plethora of simulations and models that could be embedded in content areas such as earth science, biology, chemistry, social studies, physics, and social science to help students see how patterns change” (Yadav et al. 567). In other words, automation is not just a computer science term. It can be applied to any subject which should be very appealing to a school system. For example, in earth science, students can create a model depicting the layers of Earth’s crust. Students develop a better understanding of the content because they are putting images with the vocabulary terms they are studying. The model can be broken down layer by layer to give students the details they need but also can be viewed as a whole to give students the overall concept. In other words, it can appeal to many learning styles and it’s all thanks to automation.

If computer science can help foster computational thinking for every student, how come schools are so reluctant to implement it? In a study conducted by Google, schools tend to underestimate the demand for access to computer science learning. Instead schools focus their attention and resources on subject areas that require mandatory testing (Yadav et al. 566). In other words, the reading, writing, arithmetic approach is often what schools gravitate towards because of state testing. In addition, school administrators reported that computer science is not always prioritized because of a lack of qualified teachers and resources to train and hire those teachers (Yadav et al. 566). Moreover, some schools implement flawed computer science classes. Partovi argues that some schools implement computer science as a “Microsoft Word processing class.” My home high school called this course Computer Applications 1 and it sadly fulfilled the one credit hour requirement for computer science. What my school didn’t realize was this isn’t true computer science. Students were merely using an application that had already been created using computer science. Rather than develop students creativity, my school chose to have students follow step by step instructions from a textbook on how to insert clip art. There was no problem solving; the solution was already there. 

This flawed interpretation of computer science results in issues at institutions of higher education. In fact, professors from various computer science departments agree that computational thinking should “be taught in grade school” (Stross). However, since most schools take the flawed approach, computer science departments such as at Rutgers University must “offer the equivalent of a remedial course” (Stross). In fact, some remedial courses even use Scratch! When asked why Scratch is used at the University of Maryland’s Introduction to Computers and Programming course, Marie desJardins explains “all students arrive on campus having taken high school classes in English, math, biology, and so on, but many have not taken a computer science class” (Stross). While Scratch is an excellent way to introduce computer science, it was “developed for elementary and middle school students” (Stross). If colleges are having to adapt their curriculums to accommodate these students, there is an underlying problem with computer science in the K-12 school system. Schools simply don’t know how to implement computer science into their systems. 

An efficient way for schools to implement computer science is to go with an already established curriculum. One of the most successful curriculums is from Project Lead the Way (PLTW). PLTW is an organization that promotes STEM education in areas such as engineering, computer science, and the biomedical sciences. Students “develop in-demand, transportable skills- such as problem solving, critical and creative thinking, collaboration, and communication- that they will use both in school and for the rest of their lives” (PLTW). In addition, PLTW’s curriculum is centered on the APB (activity, project, problem-based) approach which helps students understand how the knowledge and skills they develop in the classroom may be applied in everyday life (PLTW). Furthermore, PLTW has recently launched a computer science pathway in which students “work together to design solutions, learn computational thinking- not just how to code- and become better thinkers and communicators” (PLTW). Personally, I took the engineering pathway from middle school through high school and it transformed the way I approach problems. The hands-on, project based approach is the most effective way to teach computer science in grades K-12. 

Another key aspect that must be considered during implementation are the teachers. In order for a computer science course to be effective there must be proper support. Yadav states that it would be “unreasonable to expect teachers to incorporate computational thinking concepts into their practice without support and opportunities to apply these ideas to authentic tasks” (Yadav et al. 566). PLTW offers an extensive professional development training including over 80 hours of core coursework and an ongoing training after the certification has been obtained (PLTW). In addition, Google provides a free online course called Computational Thinking for Educators (Yadav et al. 566). This course is “structured around algorithms and patterns for four groups of teachers- humanities, mathematics, science, and computer science teachers” (Yadav et al. 566). In other words, the course is catered to every teacher. 

Nevertheless, some schools will still lack resources like money to implement such a curriculum. It is important to reiterate that computational thinking ideas are “cross-disciplinary” (Yadav et al. 565). These schools should not result to the flawed approach but rather work to embed computational thinking into existing subject areas. As mentioned above, the three A’s of computational thinking (Algorithm, Abstraction, and Automation) can be taught in a variety of subject areas to a variety of students. The math student can receive the same computational thinking background as the literature student because this concept is subject independent. In addition, in order to make computational thinking more applicable to K-12 schools, the Computer Science Teachers Association (CSTA) and the International Society for Technology in Education (ISTE) have developed “an operational definition of computational thinking that includes nine core CT concepts and capabilities” (Barr et al. 48-54). Furthermore, the concepts and capabilities from the CSTA/ISTE framework “provide a good place to begin to embed CT in the K-12 core content areas” (Barr et al. 48-54). Once again, no matter the capability of the school, computational thinking can still be applied to all students through existing subject areas. 

While there is overwhelming evidence that suggests computer science is an integral part of the K-12 school system, some subject areas such as the fine arts disagree. In a report entitled Champions of Change: The Impact of the Arts on Learning, Fiske argues that “the arts reach students not normally reached, in ways and methods not normally used” (Bryant QTD. Fiske). In today’s information age, computer science not only does the same thing but arguably better. Arghya Ray argues that in today’s society “computers are being used ubiquitously” (Ray). This allows computer science to reach virtually every corner of the globe through the Internet. Initiatives like the Hour of Code have gotten women and other minorities interested in computer science all with an Internet connection (Partovi). In addition, the report argues that the study of the fine arts “positively impacts the learning of students of lower socioeconomic status as much or more than those of a higher socioeconomic status” (Bryant QTD. Fiske). However, computer science has worked to reduce the poverty rate in New York City schools (Korman). By exposing students to these fundamental concepts, it is helping schools attendance rates because students are actively engaged. If they are actively engaged, they are more likely to stay in school and thus get an education. 

Additionally, the report argues that a fine arts education helps students to “stretch their minds beyond the boundaries of the printed text or the rules of what is provable.” Furthermore, the report says the arts “free the mind from rigid certainty” (Bryant QTD. Fiske). While computer science is a science, it is far from certain. Guzdial and DiSalvo argue that studying computer science “cannot be regarded as just another subject or topic of research” (Guzdial et al. 30-31). As stated earlier, through the concepts of abstraction and automation, computer science can stretch minds well beyond the printed text. In fact, it can bring art to life using a simulation. There is no rigid certainty to computer science. Students are free to express their creativity in fascinating ways. This is something the fine arts should agree with. While the report suggests the arts change the learning environment to “one of discovery” (Bryant QTD. Fiske), there is a strong argument that computer science really is a science of discovery. This field is responsible for creating the world’s most revolutionary technologies including the PC and iPhone. Furthermore, these technologies have been directly responsible for the development of fine arts areas such as graphic design and music production and distribution. Allowing students to use these technologies in the classroom to solve problems results in innovation. Innovation is vital for improving our society. In fact, the report agrees that today’s world is “witness to the Information Age” (Bryant QTD. Fiske). However, computer science plays a much more pivotal role than the fine arts.

Clearly, computer science education encompasses a lot more than just programming. It’s a start but it’s not the right start. Schools should take a computational thinking based approach emphasizing concepts such as algorithmic design, abstraction, and automation. Algorithms are the steps needed to get from Point A to Point B. The abstraction would be the overall goal of getting from Point A to Point B. Finally, the automation would be the form that the goal takes. Using these fundamental concepts, schools can take a flawed Microsoft Word processing class and transform it into a class that promotes a student’s creativity, critical thinking, and most importantly problem solving skills. Also, schools can hire and retain teachers more efficiently using this approach rather than pulling them from the industry simply because they have expertise in a high-level programming language. Unlike the fine arts, computer science is a driving force behind the information age. It harnesses the power of computing to promote students’ creativity. It uses our globally connected world to reach students that the fine arts simply can’t. Finally, it promotes the ideas of discovery and innovation that are critical for improving our society for future generations. Without a doubt, a student that obtains a fundamental computer science education is on the path to success. They really know what it means to start from scratch.
