Technology for the Mind, Advancement for the Soul
There is no escape from technology in the modern world. Even the simplest of jobs and careers require some level of technological knowledge. And while technology has limitless applications, there still exist many issues that can be solved by technology: just not enough people to solve them. Our American education system is not able to meet the growing demand of the workforce in the areas of computer science and technology, and that is something we must change with this upcoming generation.
The fields of computer science and technology are not easy. They require logical, analytical, and problem solving skills, all of which are difficult to attain if not developed progressively. So how can we ensure this development in children, to not only further their cognitive development, but also influence them into a STEM career in the future?
It was in fifth grade when I found an answer. Both of my parents are software engineers, and I remember hearing them talk about their jobs around the dinner table or at their office’s family get-togethers. I remember being fascinated by the way such complicated problems could be solved through simple strings of special keywords and functions, but I was too young to fully understand it. It was only after learning programming languages with my parents and taking engineering classes in middle school that I comprehended what computer science was all about: trying to solve day to day repetitive tasks and improve efficiency through logical thinking. My experience and interest in the vast field of computer science led me to question: how does early exposure to coding and computer science help young students learn critical thinking skills and influence the choice of going into the STEM field?
As previously mentioned, computer science and technology is ever growing. What makes this topic heavy with research is the vast amount of technology in use in today’s society. Artificial intelligence, computerized algorithms, mobile sensors, and even self driving vehicles are all transforming human life, and are all driven by programmers and the code they write (West). According to James Kell, a computer scientist who works at the Health Plan of San Joaquin, when asked how many jobs he believes will be taken over by technology, he responded with “all of it.” He also believes that programmers and other highly skilled STEM workers will be the last to be replaced by artificial intelligence. In order to keep up with this rate of advancement, a large part of the next generation of the workforce should be able to work with, or affect upcoming technology. In the 2014 book titled Connected Code: Why Children Need to Learn Programming, Yasmin B. Kafai comments:
Although few of us will become computer scientists to write the code and design the systems that undergird our daily life, we all need to understand code to be able to examine digital designs and decisions constructively, creatively, and critically. We are all users of digital technologies for functional, political, and personal purposes. On a functional level, a basic understanding of code allows people to understand the design and functionalities that underlie the interfaces, technologies, and systems that we encounter daily (Kafai 132).
Producing sufficient numbers of college graduates who are prepared for science, technology, engineering, and mathematics (STEM) occupations has become a national priority in the United States (U.S. Department of Education). There exist courses available for students in high school in the field of computer science, such as AP Computer Science Principles and AP Computer Science A, but there are not as many resources for younger grade levels. While computer science knowledge could be achieved and mastered at the high school and college level, experience with technology, reducing attrition of STEM majors in college, and highly in-demand STEM careers could all be better achieved by technological and programming lessons instituted as early as elementary schools, and can be culminated throughout middle school.
Coding at such a young age like elementary school has several benefits for the child. Coding has the potential to be a new literacy for the twenty-first century generation, enabling new ways of thinking and self expression that children were not previously exposed to (Bers 123). There are cognitive benefits to coding that have proven to improve moral development in children, such as improving problem solving and logical/reasoning skills; this can be achieved through the use of game based programming environments (Kafai 152). Kell believes that “programming changes the way [you] think, as well as the way [you] write and affect a program,” and that the logical development that stems from learning to program is a “chicken and the egg argument.” There obviously exists an age requirement to learn programming due to the necessity of logical thinking skills, but the earlier that children start to learn to program, the better their development will be. Applications such as Scratch have been demonstrated to be effective in educational environments with younger children because of the game-like nature of this particular coding environment. Scratch can also encourage students to interact and create their own projects combined with several advantages, such as motivation, fun, commitment, and enthusiasm, which culminate to the eventual demonstration of improvements related to computational thinking (Sáez-López). However, there are many alternatives to Scratch programming, and each caters to a certain level of cognitive development in children.
The highest level of cognitive development defined by Piaget is the formal operational stage, which is characterized by the ability to deal with abstractions, form hypotheses, and solve problems systematically (Cowan). It also deals with the logical reasoning of “if and only if” logic, which is significant for most programming languages. Piaget’s theory supports that formal operational thinking abilities develop around age 11-12 (White). Based on the research done on Piaget, the formal operational stage is the best stage of development to start learning programming languages. There are several different types of programming languages and each one affects cognitive development and cognitive style, which are the different ways that people process and understand information. Procedural Programming languages are comprised of sequential execution of instructions, variables holding information, and assignment operators. They are the basis of a typical programming language. They cater towards students of a higher cognitive and development stage, and a preference of the left hemisphere (White). These characteristics make Procedural Programming a very difficult type of programming language to learn at a young age. Another type of programming language is Object Oriented Programming (OOP). These languages are based on the idea of an object, which is a loosely defined memory location that contains information and operations that can affect or edit the information. OOPs are much more difficult languages to understand conceptually than Procedural Programming languages. OOP languages highly depend on abstract and relational thinking skills, which is a characteristic of the formal operational stage of moral development, as defined by Piaget. Despite this restriction, OOP languages seem to be hemispherically friendly (White). Due to the cognitive restriction, this type of language would be difficult to learn at a young age as well. Another type of programming language is Script languages, which are languages used for website development rather than backend algorithmic development. It is characterized by formats and layouts and visual design. Because of its use of straightforward visual design elements to execute code and its lack of logical statements, the lower level of cognitive development is necessary to learn this language. However, due to its visual nature, it is more right hemispherically friendly (White). Script languages are the second to easiest programming languages to learn and are able to be learned and understood at a fourth and fifth grade level, which is much lower than the age required to learn Procedural Programming and OOP languages. The final type of programming language are Visual Languages. These languages are block based and are considered the simplest type of programming language that exists. Due to its nature of simply dragging blocks to execute certain actions, the lowest level of cognitive development is required to learn and utilize Visual Languages well. These languages are also hemispherically friendly (White). Determined from the research provided, Visual Languages are the easiest languages to learn at a young age, such as elementary schools. The most influential examples of Visual Languages are Scratch and Code.org. They are block based languages and are a perfect gateway into understanding how programming works. Research has shown, however, that the Scratch programming learning approach promotes students’ logical reasoning abilities more effectively as compared to the Code.org learning approach, which is most likely attributed to the fact that Scratch programming activities and lessons allows for more creativity and self expression, which is important when teaching children to code (Lai). Using Scratch and Code.org have the potential of sparking an interest in children, which could progress into a career in technology, computers, or another STEM career in the future.
As previously mentioned, the nation needs more STEM majors. In 2017, there were nearly 8.6 million STEM jobs. According to the “Projected Growth rates for Types of STEM Occupations” graph in the statistics report done by the U.S. Bureau of Labor Statistics, computer technology occupations were among the careers with the highest projected growth rates, which further demonstrates an earlier idea: that the world is shifting dramatically towards even more technology (Fayer). This raises the question, however, of whether colleges have the resources to fuel the education needed to join a technologically advanced workforce. According to Sunil Gopala, a software engineer working for the local government, “coding and learning to program is a pleasant experience in the colleges in the United States.” Gopala attended college in both India and the United States, and elaborated on the differences between the framework of computer science classes of the universities in both countries. He specified that in the 1990’s, when he went to college for computer science, the coding languages and resources available were minimal and open to much interpretation, which made learning to program far more challenging than it is right now. He also detailed upon the fact that more effort was required to make your program work properly and efficiently due to the lack of underlying support functions (basic level infrastructure required to allow your program to execute). With more resources to better learn programming at a higher level of education, the colleges in the United States can better prepare their students for the workforce and the high paying jobs that STEM majors lead to.
According to the Georgetown University Center on Education and the Workforce and the study and report they led on The Economic Value of College Majors, careers in computers and information systems receive an average salary of 60k to 120k, which is a larger amount compared to some non STEM careers (Georgetown Center on Education and the Workforce). Upon further inspection of these figures, a conclusion could be made that STEM majors, especially in the sector of Computer Science, can help prepare you for these high paying careers and set you up to be able to adapt to and cause change in society. Computer scientists armed with technology can directly address societal issues such as poverty and unemployment by programming applications and organizing teams to address needs as they arrive in communities. Computer Scientists also have the power to further education through creating e-learning applications, accelerating healthcare progress by designing software for medication, and expanding communications over long distances (Flavin).
Early exposure to Computer Science does have a beneficial effect on the cognitive developments of children, yet does the program improve logical thinking skills, or does having logical thinking skills improve the program? In consideration of the research and studies provided, the answer to my question is not a simple one. Certain programming languages require a particular level of mental understanding of problems, solutions, and dealing with abstract objects, while other programming languages are far simpler and require basic understanding of English commands. Each type of programming language can be implemented into education at various grade levels, and can also be catered towards specific students, which would in turn make the curriculum more unique and personalized. If the implementation of such activities occurs and continues steadily throughout elementary school and middle school, the likeliness that students will choose classes such as AP Computer Science Principles and AP Computer Science A in high school heightens; this increases the potential for a student to transform into a Computer Science/Engineering or other STEM major in college. Even if the student does not eventually choose to go into the workforce as a software engineer or computer scientist, understanding the way technology works will be beneficial to the student’s life in several ways: improving cognitive development, increasing the development and usage of logical thinking and reasoning skills, and shaping their cognitive attitude and the way they understand and process information. Computer science and coding has the power for not only self improvement, but also positively affect and improve the world in small but influential steps. Whether the end goal is a career in information systems and software or just a general understanding of how technology works, learning to program at a young age improves cognitive abilities.
The fields of computer science and technology are not easy. They require logical, analytical, and problem solving skills, all of which are difficult to attain if not developed progressively. So how can we ensure this development in children, to not only further their cognitive development, but also influence them into a STEM career in the future?
It was in fifth grade when I found an answer. Both of my parents are software engineers, and I remember hearing them talk about their jobs around the dinner table or at their office’s family get-togethers. I remember being fascinated by the way such complicated problems could be solved through simple strings of special keywords and functions, but I was too young to fully understand it. It was only after learning programming languages with my parents and taking engineering classes in middle school that I comprehended what computer science was all about: trying to solve day to day repetitive tasks and improve efficiency through logical thinking. My experience and interest in the vast field of computer science led me to question: how does early exposure to coding and computer science help young students learn critical thinking skills and influence the choice of going into the STEM field?
As previously mentioned, computer science and technology is ever growing. What makes this topic heavy with research is the vast amount of technology in use in today’s society. Artificial intelligence, computerized algorithms, mobile sensors, and even self driving vehicles are all transforming human life, and are all driven by programmers and the code they write (West). According to James Kell, a computer scientist who works at the Health Plan of San Joaquin, when asked how many jobs he believes will be taken over by technology, he responded with “all of it.” He also believes that programmers and other highly skilled STEM workers will be the last to be replaced by artificial intelligence. In order to keep up with this rate of advancement, a large part of the next generation of the workforce should be able to work with, or affect upcoming technology. In the 2014 book titled Connected Code: Why Children Need to Learn Programming, Yasmin B. Kafai comments:
Although few of us will become computer scientists to write the code and design the systems that undergird our daily life, we all need to understand code to be able to examine digital designs and decisions constructively, creatively, and critically. We are all users of digital technologies for functional, political, and personal purposes. On a functional level, a basic understanding of code allows people to understand the design and functionalities that underlie the interfaces, technologies, and systems that we encounter daily (Kafai 132).
Producing sufficient numbers of college graduates who are prepared for science, technology, engineering, and mathematics (STEM) occupations has become a national priority in the United States (U.S. Department of Education). There exist courses available for students in high school in the field of computer science, such as AP Computer Science Principles and AP Computer Science A, but there are not as many resources for younger grade levels. While computer science knowledge could be achieved and mastered at the high school and college level, experience with technology, reducing attrition of STEM majors in college, and highly in-demand STEM careers could all be better achieved by technological and programming lessons instituted as early as elementary schools, and can be culminated throughout middle school.
Coding at such a young age like elementary school has several benefits for the child. Coding has the potential to be a new literacy for the twenty-first century generation, enabling new ways of thinking and self expression that children were not previously exposed to (Bers 123). There are cognitive benefits to coding that have proven to improve moral development in children, such as improving problem solving and logical/reasoning skills; this can be achieved through the use of game based programming environments (Kafai 152). Kell believes that “programming changes the way [you] think, as well as the way [you] write and affect a program,” and that the logical development that stems from learning to program is a “chicken and the egg argument.” There obviously exists an age requirement to learn programming due to the necessity of logical thinking skills, but the earlier that children start to learn to program, the better their development will be. Applications such as Scratch have been demonstrated to be effective in educational environments with younger children because of the game-like nature of this particular coding environment. Scratch can also encourage students to interact and create their own projects combined with several advantages, such as motivation, fun, commitment, and enthusiasm, which culminate to the eventual demonstration of improvements related to computational thinking (Sáez-López). However, there are many alternatives to Scratch programming, and each caters to a certain level of cognitive development in children.
The highest level of cognitive development defined by Piaget is the formal operational stage, which is characterized by the ability to deal with abstractions, form hypotheses, and solve problems systematically (Cowan). It also deals with the logical reasoning of “if and only if” logic, which is significant for most programming languages. Piaget’s theory supports that formal operational thinking abilities develop around age 11-12 (White). Based on the research done on Piaget, the formal operational stage is the best stage of development to start learning programming languages. There are several different types of programming languages and each one affects cognitive development and cognitive style, which are the different ways that people process and understand information. Procedural Programming languages are comprised of sequential execution of instructions, variables holding information, and assignment operators. They are the basis of a typical programming language. They cater towards students of a higher cognitive and development stage, and a preference of the left hemisphere (White). These characteristics make Procedural Programming a very difficult type of programming language to learn at a young age. Another type of programming language is Object Oriented Programming (OOP). These languages are based on the idea of an object, which is a loosely defined memory location that contains information and operations that can affect or edit the information. OOPs are much more difficult languages to understand conceptually than Procedural Programming languages. OOP languages highly depend on abstract and relational thinking skills, which is a characteristic of the formal operational stage of moral development, as defined by Piaget. Despite this restriction, OOP languages seem to be hemispherically friendly (White). Due to the cognitive restriction, this type of language would be difficult to learn at a young age as well. Another type of programming language is Script languages, which are languages used for website development rather than backend algorithmic development. It is characterized by formats and layouts and visual design. Because of its use of straightforward visual design elements to execute code and its lack of logical statements, the lower level of cognitive development is necessary to learn this language. However, due to its visual nature, it is more right hemispherically friendly (White). Script languages are the second to easiest programming languages to learn and are able to be learned and understood at a fourth and fifth grade level, which is much lower than the age required to learn Procedural Programming and OOP languages. The final type of programming language are Visual Languages. These languages are block based and are considered the simplest type of programming language that exists. Due to its nature of simply dragging blocks to execute certain actions, the lowest level of cognitive development is required to learn and utilize Visual Languages well. These languages are also hemispherically friendly (White). Determined from the research provided, Visual Languages are the easiest languages to learn at a young age, such as elementary schools. The most influential examples of Visual Languages are Scratch and Code.org. They are block based languages and are a perfect gateway into understanding how programming works. Research has shown, however, that the Scratch programming learning approach promotes students’ logical reasoning abilities more effectively as compared to the Code.org learning approach, which is most likely attributed to the fact that Scratch programming activities and lessons allows for more creativity and self expression, which is important when teaching children to code (Lai). Using Scratch and Code.org have the potential of sparking an interest in children, which could progress into a career in technology, computers, or another STEM career in the future.
As previously mentioned, the nation needs more STEM majors. In 2017, there were nearly 8.6 million STEM jobs. According to the “Projected Growth rates for Types of STEM Occupations” graph in the statistics report done by the U.S. Bureau of Labor Statistics, computer technology occupations were among the careers with the highest projected growth rates, which further demonstrates an earlier idea: that the world is shifting dramatically towards even more technology (Fayer). This raises the question, however, of whether colleges have the resources to fuel the education needed to join a technologically advanced workforce. According to Sunil Gopala, a software engineer working for the local government, “coding and learning to program is a pleasant experience in the colleges in the United States.” Gopala attended college in both India and the United States, and elaborated on the differences between the framework of computer science classes of the universities in both countries. He specified that in the 1990’s, when he went to college for computer science, the coding languages and resources available were minimal and open to much interpretation, which made learning to program far more challenging than it is right now. He also detailed upon the fact that more effort was required to make your program work properly and efficiently due to the lack of underlying support functions (basic level infrastructure required to allow your program to execute). With more resources to better learn programming at a higher level of education, the colleges in the United States can better prepare their students for the workforce and the high paying jobs that STEM majors lead to.
According to the Georgetown University Center on Education and the Workforce and the study and report they led on The Economic Value of College Majors, careers in computers and information systems receive an average salary of 60k to 120k, which is a larger amount compared to some non STEM careers (Georgetown Center on Education and the Workforce). Upon further inspection of these figures, a conclusion could be made that STEM majors, especially in the sector of Computer Science, can help prepare you for these high paying careers and set you up to be able to adapt to and cause change in society. Computer scientists armed with technology can directly address societal issues such as poverty and unemployment by programming applications and organizing teams to address needs as they arrive in communities. Computer Scientists also have the power to further education through creating e-learning applications, accelerating healthcare progress by designing software for medication, and expanding communications over long distances (Flavin).
Early exposure to Computer Science does have a beneficial effect on the cognitive developments of children, yet does the program improve logical thinking skills, or does having logical thinking skills improve the program? In consideration of the research and studies provided, the answer to my question is not a simple one. Certain programming languages require a particular level of mental understanding of problems, solutions, and dealing with abstract objects, while other programming languages are far simpler and require basic understanding of English commands. Each type of programming language can be implemented into education at various grade levels, and can also be catered towards specific students, which would in turn make the curriculum more unique and personalized. If the implementation of such activities occurs and continues steadily throughout elementary school and middle school, the likeliness that students will choose classes such as AP Computer Science Principles and AP Computer Science A in high school heightens; this increases the potential for a student to transform into a Computer Science/Engineering or other STEM major in college. Even if the student does not eventually choose to go into the workforce as a software engineer or computer scientist, understanding the way technology works will be beneficial to the student’s life in several ways: improving cognitive development, increasing the development and usage of logical thinking and reasoning skills, and shaping their cognitive attitude and the way they understand and process information. Computer science and coding has the power for not only self improvement, but also positively affect and improve the world in small but influential steps. Whether the end goal is a career in information systems and software or just a general understanding of how technology works, learning to program at a young age improves cognitive abilities.