Chapter 6: 21st-century media and issues
6.14.2 Literacy in computer science (research essay)
English 102, April 2021
Computer Science is one of the fastest growing fields as the world transitions to increased automation. Schools of all levels are putting a greater emphasis on educating the younger generation on programming. This suggests that schools are growing their STEM departments, which house the fields of science, technology, engineering, and mathematics. In order to understand why many educators are approaching the field of Computer Science in this way, it must be understood what Computer Science is. It is most commonly defined as the study of computer software and computing systems. More specifically, it deals with creating, reading, and error-checking programming or code. While it is true that STEM is very important within the field of programming, there are other important aspects of coding that are not frequently considered by many educators. Coding includes being able to read, write, and communicate in a unique way, which implies that literacy involved in the field. Any form of literacy that is not directly learning how to read, write, or communicate in standard English is often not considered to be literacy, which is a major reason that its importance within programming is not recognized. The fact that many educators within the field of Computer Science do not realize the importance of literacy alludes to the idea that the teaching of programming may be flawed in its methods and implementation.
Computer Science is very important in my life, as I am currently pursuing a degree in the field. I have been programming for just over a year now and have experience in Python and Java programming languages. I have taken three courses on programming/computer science in college, in which I have learned so much about programming and Computer Science in general. In addition to coursework, I frequently work on coding projects for my own entertainment and read/watch articles and videos on programming. Any knowledge that I gain on the most effective ways to learn programming is very important to my future. Even more important than gaining this knowledge for myself, being able to spread this knowledge to grow the field is paramount. Although I am not an expert in programming, I have had many learning experiences with programming that qualify me to discuss my personal experiences with learning how to program. Since the focus of this essay deals with the teaching methods and learning experiences of programming, the relative freshness of my learning experiences with programming provides me with an advantage over industry professionals in this discussion.
Writing in Computer Science
Although it may be somewhat difficult to discover the parallels between computer programming and literacy, the literacy aspect of writing can be understood very easily. When thinking of what a programmer does, one of the simplest and high-level descriptions could be “someone who writes code.” The main similarity between the two practices is the exist in the process of creating a finalized piece of work, whether it be a novel for an application. In Felienne Hermans and Marlies Aldewereld’s article, “Programming is Writing is Programming,” the authors describe the beginning of the writing process and programming workflow to include a high-level plan (1). The next step in both processes is to convert these high-level designs into low-level, workable steps. For writers, these low-level steps include sentences and words; for programmers, they include methods, functions, and lines of code. For both practices, intermediate steps are needed manage the organization of the work, such as chapters in writing and classes and objects in programming (Hermans and Marlies 2). In the programming course that I am currently enrolled in, every coding assignment that is submitted must be accompanied by pseudocode, which is essentially a plan for how the final code will look. This pseudocode, which is written in a mix of English and Java syntax, begins with high-level plans that are broken down into smaller, more manageable steps. The process of writing pseudocode was not all that difficult to me when I realized that it was just like the outlines that I have been writing for English courses for years. These outlines broke up the goal of the essay into manageable portions and consisted of some wording that would be directly added to the essay and some rough ideas that would need to be converted into cohesive writing.
In Ziva R. Hassenfeld’s et al article, “If you can Program you can Write,” explores the constructs shared by computer programming and writing in great detail. The authors discuss the similar constructs between the two practices as, “planning and prewriting, creating and drafting, testing and evaluating, and debugging and editing and revising” (Hassenfeld et al. 68). The study described in this article, which focuses on the correlation between elementary student’s ability to write and ability to learn programming, showed that these similarities between the two practices produce a correlation between students’ ability to write and their ability to program (Hassenfeld et al. 75). In the section titled “Programming as Literacy” of Annette Vee’s novel, “Coding Literacy: How Computer Programming is Changing Writing,” she discusses an extremely interesting way to observe the similarities between writing and programming. Vee dives into exploring the ways in which programming is treated like writing within United States law. The United States Congress amended the 1976 Copywrite Act in 1980 to categorize computer code as a “literary work” and a “form of writing” (Vee 450). Since a law protecting writing and forms of creative expression, it can be alluded that the United States law views computer programming as a form of writing.
Reading in Computer Science
Reading is also extremely prevalent within the world of programming and Computer Science in general. Peg Grafwallner’s article, “Encoding Literacy in Computer Science,” examines an instructional coach and computer science teacher’s attempt to implement literacy lessons into a computer science class. The article states that reading within Computer Science requires students to focus on one specific area at a time, thinking in a linear and conceptual manner (Grafwallner). The computer science class discussed in this article was taught with an emphasis on literacy through directions, ultimately proving to boost the success of the students’ ability to program. The ability to read instructions was determined to be the most vital skill in programming (Grafwallner).
In Marthie Schoeman’s article, “Reading Skills Can Predict the Programming Performance of Novices,” the relationship between reading and ability to code is discussed extensively. In the study described in the article, the reading level of students were determined using eye-tracking technology. The students then took an introductory course in computer programming that would be followed by a final examination (Schoeman 44). The results of the study show that students with low reading skills failed the programming component, while those with higher reading skills did better overall. These results depict the fact that reading skills do play a role in one’s ability to learn programming (Schoeman 48). This relation can be attributed to the fact that programming is a form high-level written language in its own sense. In my own experiences, reading programming has proved to be one of the most vital skills that a computer programmer can possess. One of the main points of emphasis within Computer Science classes is being able to read and debug others’ code. Since there are so many different ways that a program can be created, I initially struggled with reading others’ code. The skill of reading code is very similar to reading literary works, as some authors are naturally easier to follow along with than others. Reading code is a vital aspect of computer programming and is a skill that I am still working on improving.
Communication in Computer Science
Although communication is not necessarily involved in the creation of all computer programs, communication in vital within the professional setting of Computer Science, in addition to engaging in programming within a team environment. In Gilles Dubochet’s article, “Computer Code as a Medium for Human Communication,” it is stated that communication between a human and a computer is the main objective of computer programming. The article goes on to state that computer programming itself has become a channel for human communication (Dubochet 1). The article explores the increase in team usage in the field of computer science, suggesting that the ability to understand the code that other’s write is extremely important (2). Understanding the code that others write is not only dependent on one’s ability to read and understand coding syntax and standards, but also the ability of the person reading the code and the person who wrote the code to communicate effectively with one another. The article suggests that communication is not only prevalent through oral dialect, but that programming languages are becoming a channel for communication between programmers (Dubochet 13). In other words, programmers are able to convey their thoughts through a programming language.
At the start of my college career, I did not expect for communication to be as prevalent as it was within my Computer Science courses. Throughout the entire Fall Semester of my introduction to programming course, a team of students that we were assigned to were required to code a robot. Due to the business of the group members’ schedules, we often had to do portions of the project on our own. This meant that I would often log in to add a portion to the code and would be confused by the code that was just written above. Through a simple phone call or text, all of the team members were able to understand the others’ work. The communication between our team was extremely important for this reason, as the project would have fallen apart without it. Throughout the semester, our team began to “comment” our code, which is simply inserting explanation within the code that do not affect how the code runs. If “//” is used before a line, the programming software environment understands that this is just for programmers to read. This simple addition to our code meant that we were actually able to communicate directly through the code, without having to text, call, or talk at all.
Marc Riemer breaks down the importance of communication and language skills in a broader field of engineering in the article titled, “Communication Skills for the 21st Century Engineer.” Riemer discusses the importance of communication skills in engineering, primarily focusing on the English language. He states that English is the most widespread language in the world and that effective communication in English is a skill that develops more successful engineers (91). Riemer examines the importance of communication between engineers and stakeholders (95). After engineers’ years of education in upper-level concepts, it can be difficult to decipher what stakeholders are familiar and not familiar with. Being able to effectively break down the concepts into more common terminology plays a major role in one’s success within the field of Computer Science as well as all other engineering disciplines. The findings of this article suggest that an increase in communication and language courses in college curriculums will produce more successful engineers (Riemer 98). Although this article focuses more broadly on engineering, Computer Science is a major branch of engineering that shares in the same challenges of communication as all other major fields of engineering.
Computer Programming as a Language in Itself
Computer Programming is much more than a computational practice, as learning programming languages comes with many of the same challenges as learning human languages, uncovering the fact that computer programming is its own unique form of literacy or language. When I was applying for colleges and deciding on a major, I honestly did not know what I wanted to do. I knew that I loved math and problem solving and would want to pursue a career in math-based field. The reason that I chose to pursue a career in Computer Science was purely for this reason, as I have never taken a coding course or had any prior experience. Once I began coding in my collegiate level courses, I fell in love with the problem-solving aspect. I was grasping the various coding techniques and problem-solving methods, but found that the portion I was struggling with the most was syntax and coding conventions. I thought that learning to program would be like learning Calculus, but, in reality, it was actually like learning a new language.
The world of programming is extremely complex, with syntax and grammar of its own, comparable to the grammar and structure used in human languages. The article, “Classifying Programming languages,” is an excellent source for understanding how programming languages are classified and the many similarities and differences between. The authors state that there are eight major categories of programming languages, categorized by “linguistic structure, expressive features, possibility of efficient implementation, direct support for certain programming models, and similar concerns” (“Classifying Programming Languages”). This practice of categorizing languages based on various features is used extensively in human languages also. For example, the Romance Languages are all rooted in Latin and have similar sounds, sentence structure, etc. The article goes on to explain there are many styles of programming that can be used within one language (“Classifying Programming Languages”). This is also a construct that is common throughout human languages, as there are many styles of writing within the English language. Programming languages also have their own grammar and syntax. The grammar portion of coding could be described through common code standards, such as camel case being used for variable names or uppercase being used for constant names. The syntax portion of coding is slightly different than in English, as errors in syntax within programming will cause the program to crash, losing functionality.
In Ana Harris’ article, “Human Languages vs. Programming Languages,” she breaks down the criteria for something to be considered a language. Harris states that the main function of language is communication. She goes on to explain that the function of programming languages is to communicate a series of an instructions to a computer or machine, alluding to the idea that programming languages are indeed unique forms of literacy/language. Harris zooms in on another major similarity between human languages and programming languages, being structure. She discusses the concepts of semantics (meaning connected to a certain concept) and syntax (rules for aligning words and phrases) from the perspective of a linguist. She states that programming uses semantics, as every program has a specific intention, and syntax, which includes following rules for the use of variables, functions, parenthesis, colons, etc. (Harris). These many similarities allow for programming to be considered its own unique form of literacy or language.
Connection between Literacy Skills and Programming Ability
Due to the many parallels between computer programming and literacy, it can be gathered that programming ability and literacy skills benefit one another. Although I enjoy and excel in mathematics and problem solving more-so, I have always loved reading and writing. Throughout my journey of learning programming, this love and ability has helped to excel in the field. Although many of my peers are more advanced than myself in mathematics, this ability has proved to give me a slight upper hand in some aspects of coding. Many of my peers who lack in this ability often have trouble with their code simply because they missed a portion of the instruction when reading, misunderstood what was being asked of them, or they had trouble recalling the semantics and syntax required for the program.
In Sharin Jacob and Mark Warschauer’s article, “Computational Thinking and Literacy,” the authors discuss how literary skills can lead to stronger computational skills. The authors describe in detail how computational thinking (computer programming) is a form of literacy, which was discussed earlier extensively (Jacob and Warschauer 3). The authors then switch gears to focus on how literacy skills can improve programming ability. The article describes the importance of verbal analysis of game architecture to their implementation of game design. The example that the authors use to back up this statement is as follows: The statement “the hunter killed the monkey” is implemented into the coding as “the monkey disappears when it touches the hunter” (Jacob and Warschauer 8). This example shows the importance of one literary element, transitive verb structures, to the success of a game developer. Jacob and Warschauer state, “students cannot master programming syntax without understanding the semantic meaning of commands if they cannot produce correct linguistic forms without considering their corresponding meanings” (10). The authors are saying that students are required to use the same skills within literacy courses that they are required to use within programming, just manifest in different ways. Therefore, skills that are taught in literacy primarily can assist in improving programming ability.
Marthie Schoeman’s article discussed above, “Reading Skills Can Predict the Programming Performance of Novices,” further displays how literacy skill can affect programming performance. This article discusses a study of the relationship between reading skills and the ability to code. The method of the study involved performing an initial eye tracking test on participants as they were reading to determine their reading proficiency. The participants were then given a short introductory course in programming, which would be followed by a knowledge exam (Schoeman 42). The results of the study displayed that those students with low reading skills failed the programming component, while students with higher reading skills did better overall (Shoeman 48). These results suggest that the literary skill of reading does indeed play a role in one’s ability to learn programming.
All of the findings discussed throughout the entirety of this essay display the fact that teaching programming to young people more similarly to the ways in which that literacy is taught may be more effective than just the typical STEM approach. Marina Bers’ article, “Coding as Another Language,” discusses a new method of teaching computer science to young children starting in kindergarten called “Coding as Another Language” (499). The method of teaching coding described in this article deviates from the typical STEM approach, offering the proposition that computer science teaching can be enhanced by incorporating the design of literacy instruction, due to the parallels that exists between natural languages and programming languages (Bers 504). According to Bers, research shows that teaching children how to read and write artificial languages in the same way as natural languages leads to a greater cognitive understanding of programming (503).
In Ziva R. Hassenfeld’s et al. article, “If you can Program you can Write,” the authors examine a study of elementary students learning through the “Coding as Another Language” curriculum. The article discusses results from a test on literacy and an assessment of students’ understanding of an introductory program language, drawing conclusions based upon their correlation (Hassenfeld et al. 73). The results of this study show that there is a connection between students’ literacy levels and their height of achievement in grasping an introductory programming language (Hassenfeld et al. 75). This indicates that there are fundamental understandings and constructs that are shared by literacy and computer programming, which are described in detail earlier. All of these articles suggest that the instruction of programming in early years is more effective when taught more similarly to literacy instruction than just being taught in the typical STEM approach.
The future of Computer Science is limitless, due to the increase in automation throughout societies. As the field continues to grow, programming education will become more and more prevalent within elementary and high schools across the country. The ways in which programming is taught needs to transition to a more literacy-based approach for younger children to improve the effectiveness of the education. If the instruction of programming evolves according to the findings displayed in this essay, so will the growth of the field of Computer Science. Just as most people hold the belief that literacy is not involved in the field of Computer Science, many people are unaware of its presence within all STEM fields, whether it be biology, nursing, or engineering. If the style of teaching programming is holding back the future of programming so drastically by ignoring literacy approaches, imagine how much the world is being held back by this issue.
Bers, Marina Umaschi. “Coding as another language: a pedagogical approach for teaching computer science in early childhood.” Journal of Computers in Education 6.4 (2019): 499-528.
Byrd, Antonio. “Between learning and opportunity: A study of African American coders’ networks of support.” Literacy in Composition Studies 7.2 (2019): 31-56.
Cencelj, Zvonka, et al. “Role and meaning of functional science, technological and engineering literacy in problem-based learning.” Journal of Baltic Science Education 18.1 (2019): 132-146.
“Classifying Programming Languages.” Pltypes, Loyola Marymount University,
Dubochet, Gilles. “Computer Code as a Medium for Human Communication: Are Programming Languages Improving?” Proceedings of the 21st Working Conference on the Psychology of Programmers Interest Group. No. CONF. University of Limerick, 2009.
Grafwallner, Peg. “Encoding Literacy in Computer Science.” Edutopia, George Lucas Educational Foundation, 10 Jan. 2018, www.edutopia.org/article/encoding-literacy-computer-science.
Harris, Ana. “Human Languages vs. Programming Languages.” Medium, Medium, 1 Nov. 2018, medium.com/@anaharris/human-languages-vs-programming-languages-c89410f13252.
Hermans, Felienne, and Marlies Aldewereld. “Programming is writing is programming.” Companion to the first International Conference on the Art, Science and Engineering of Programming. 2017.
Jacob, Sharin Rawhiya, and Mark Warschauer. “Computational thinking and literacy.” Journal of Computer Science Integration 1.1. 2018.
Riemer, Marc J. “Communication skills for the 21st century engineer.” Global J. of Engng. Educ 11.1 (2007): 89-100.
R Hassenfeld, Ziva, et al. “If You Can Program, You Can Write: Learning Introductory Programming Across Literacy Levels.” Journal of Information Technology Education: Research, vol. 19, 2020, pp. 065–085., doi:10.28945/4509.
Schoeman, Marthie. “Reading skills can predict the programming performance of novices: an eye-tracking study.” Perspectives in Education 37.2 (2019): 35-52.
Vee, Annette. “Computer Programming as Literacy.” Coding Literacy, 2017, pp. 445–452., doi:10.7551/mitpress/10655.003.0003.