Brandon Pettenati

Ms. Boyle

ENG 160

November 12th, 2021

Learn to Program, Learn to Think

Computers: at the lowest level they’re machines that can only move numbers around, however they have become so advanced that they can be used for an astronomical number of real-world applications. Go about your day and count the number of computers you use, your laptop, cellphone, calculator, smart TV, the credit card reader at the supermarket. As you can see, they’re everywhere and they’re only going to become more prevalent in society as time goes on. As of now most high schools in America do not have well established computer science programs. Computer science should be commonplace in schools as it teaches you not only an increasingly valuable skill, but because it teaches you how to think.

In 1971 Intel would release the first microprocessor or the first integrated CPU (central processing unit), the Intel 4004. This was the first microprocessor of its kind to be released commercially. The Intel 4004 was a 4-bit processor, meaning that it could operate on numbers up to four binary digits (0 – 15 in decimal), capable of running at 740 KHz. This processor would go on to mark a turning point in the industry; a completely integrated CPU that could fit in the palm of your hand that also didn’t cost a fortune to produce. Before this CPU’s would typically take up a large amount of space. This would allow any regular consumer to have access to a computer and programming. It would also now allow software to be portable between computers. Today computers are microscopic, extremely fast, and powerful. Typically, CPUs today are either 32-bit (0 – 4,294,967,295 in decimal; 4 GiB) or 64-bit (0 – 1.8446744E+19 in decimal; 1.718e+10GiB) and typically run at a clock speed anywhere from 2 – 5 GHz. That is a monumental increase in speed and power in such a short span of time.

Steve Jobs, co-founder of Apple and pioneer of the personal computer revolution once stated, “Everyone in this country should learn how to program because it teaches you how to think”. Out of all my time programming, the single most important thing I learned how to do was problem solve. Majority of programming comes down to being able to break down your problem into small steps that can be solved with computers. Learning programming language syntax is half of the equation. Learning syntax will only help you program more efficiently; without good logic and problem-solving skills, you will not get very far. In 1991 a study was conducted to determine if programming could help improve problem solving skills. In the study the author states:

“learners reported considerably more difficulty in mastering the syntax and commands of BASIC than elementary learners experienced with Logo. Some researchers assert that transfer of problem-solving skills gained through programming can occur even without language mastery as long as sufficient instruction and practice within the transfer domains is provided [38]. Others argue that a prescribed “chain of cognitive accomplishments” occurs, through which learners move from learning specific features of the language to applying templates to procedural skills, to generalizable problem-solving skills [6,37,59, 63, 641]. Researchers note that mastering programming to a level where generalizable problem-solving skills are learned is a long and arduous process

[65-681]”(Dalton, Goodrum 499).

In this study the high school students were exposed to BASIC (beginners all-purpose symbolic instruction code) while elementary students were exposed to Logo, a much simpler language. In the study, it was recognized that the elementary students had a larger increase in problem solving skill than the high schoolers did; this was due to the syntax of BASIC being more complicated than Logo. This is critical to showing that the increase in problem solving skills comes directly from learning conceptual programming ideas rather than memorizing syntax. To learn to program, you must learn some kind of language. By teaching computer programming early on, it would allow students to overcome the syntax barrier, learn conceptual ideas and thus gain problem solving skills.

As previously stated, a computer in simplest terms is only a machine that moves numbers around. At the lowest level of a computer, this is all it can do, move bits (1 or 0s) in and out of memory, and compute arithmetic with them. The fundamental design behind a CPU and how they do things (compute) is switches. Early computers used electromagnets to act as switches, then vacuum tubes, and then transistors (what is still used today). A transistor acts as a switch that can be electrically turned off or on. Putting these switches or transistors, in this case, together in conjunction with power and some sort of output component such as a LED (Light Emitting Diode) we can make what is called a logic gate. In low level computing like this, a binary number system must be used as opposed to decimal because in a digital circuit the electricity is either on or off (1 or 0; true or false; high or low). To make a circuit that can do arithmetic we can put different logic gates together, this forms the basis of a processor. Low level programming (assembly language) is a type of programming that directly encourages logical thinking. In this type of programming, you are directly accessing the processor. In assembly language there are op codes (operation codes) that are essentially a binary number that will do a specific function within the processor. A line of code in assembly language will consist of an op code followed by either a memory address or a numerical value. So, if you wanted to draw an image to the display, you would need to load your values (colors) into the computer and then store them in the correct video memory address’, thus turning the pixel of the screen to that color. Despite being a cumbersome and, in some cases, archaic way to program it directly teaches you how to think logically in relation to the computer because there are no shortcuts.

The other reason why teaching programming and computer science is so important is because of how increasingly important it is in our society. The computer industry is a multi-billion-dollar industry, and it is only going to keep growing. Before the 1960s the word computer typically referred to the job of someone that did calculations, it now refers to any machine that can carry out arithmetic or logical operations. Teaching programming in schools would open many people to a plethora of new career options. There are many people that will never think to major in something such as computer science or computer engineering because they think it is too hard or ‘nerdy’. There are also a lot of people that take up computer science as their major but then later realize that they do not like it, or it is too hard for them. By teaching students from elementary on, they will be exposed to new career options, and it will prevent these things from happening.

“The initial phase of problem solving—that is, the analysis of the programming problem—requires the students to be able to identify, analyze, plan, and create possible ways to solve the problem with whatever programming language at hand, a task that requires the highest cognitive dimension identified in the Revised Bloom Taxonomy (Anderson & Krathwohl, 2001). In other words, computer programming requires a higher-level knowledge or knowledge at the strategic or conditional level (McGill & Volet, 1997). This is the knowledge of “when and why,” which requires metacognitive skills and problem-solving skills which are apparently lacking among the computer science students” (Ismail, Ngah, Umar 37).

In this study, the authors state that computer programming directly involves the ability to identify, analyze, and plan. One of the biggest ways programming teaches this is through trial and error. While programming a large amount of your time will be spent creating a plan, implementing it, finding errors, and repeating until a solution is found. There is no right or wrong way to program something; almost every problem has more than one way to program it. Computer science is one of the only subjects that teaches students to solve a problem by themselves and allows them to solve it with any method (within reason, e.g., using a third-party code library that already solved the problem typically doesn’t fall withing reason) they please, rather than by following a procedure.

It can be frequently heard from others that computers are the future. This is nothing to pass up on as the last fifty years of our society has pointed to this. Computers are becoming increasingly prevalent in our society; they’re in your TV, they’re in your pocket, they’re in your car, they even drive your car for you in some cases and believe it or not they’re already doing surgery on you. Being able to program is incredibly valuable as you can do so much with it. For example, here at New Paltz, the dining hall menu is posted online on the school’s website, however maybe you don’t want to have to navigate to the website every day to look at it. Programming-wise it would be a relatively simple process to build and host a bot that would access this website every day, scrape the menu from this website and then text that data to your phone every morning. In the article “The Future of the Computer Industry” Grove states:

“Figure 1 shows that in 1970 there were about a thousand transistors on an average chip. In 1990, the leading-edge chips have one to two million transistors. By the year 2000, we are going to have approximately 50-100 million transistors on a chip. This dynamic will significantly affect the future structure of the computer industry as well as the

pace of change… The improvement has been phenomenal.  In a little over five years, the cost adjusted by performance decreased by 90% (see Figure 2). This unprecedented rate of decline in cost to the consumer came about, basically, as a result of standardization.  In the future, the price/performance characteristics will continue to drop further and further at this hair-raising rate” (Grove 148).

In the article Grove goes on to discuss how much computers have advanced from 1970 – 2000. Grove shows how fast this industry has grown in such a short span of time, without even considering the number of transistors that modern processors have. It is only reasonable to predict that computers will continue to evolve and so will our reliance on them.

Society today is run by computers. By learning to program computers, you are learning an extremely valuable skill while also learning logic, problem solving and planning skills. Teaching programming in schools would allow more people to learn valuable skills as well as open them to new career possibilities. Computers are not magical boxes and learning programming is not rocket science; they are machines that anyone can use to learn something and can take advantage of to make their life easier.

 

 

 

 

 

 

Works Cited

Cass, S. (2021, October 22). Chip hall of fame: Intel 4004 microprocessor. IEEE Spectrum. Retrieved November 16, 2021, from https://spectrum.ieee.org/chip-hall-of-fame-intel-4004-microprocessor.

Dalton, David W., and David A. Goodrum. “The Effects of Computer Programming on Problem Solving Skills and Attitudes.” Journal of Educational Computing Research, vol. 7, no. 4, Nov. 1991, pp. 483–506, doi:10.2190/762V-KV6T-D3D1-KDY2.

Grove, Andrew S. “The Future of the Computer Industry.” California Management Review, vol. 33, no. 1, Fall 1990, p. 148–126\0. EBSCOhost, doi:10.2307/41166643.

Ismail, Mohd Nasir, et al. “The Effects of Mind Mapping with Cooperative Learning on Programming Performance, Problem Solving Skill and Metacognitive Knowledge among Computer Science Students.” Journal of Educational Computing Research, vol. 42, no. 1, Jan. 2010, pp. 35–61, doi:10.2190/EC.42.1.b.