Computer coding, also commonly known as programming is the process of writing instruction for computers to perform. Although, it may initially appear as a modern activity born with the advent of computers. The fundamental principles of programming trace back to antiquity, when Heron of Alexandria in 60 A.D created a mechanical machine with puppets attached to it.
The device contained multiple strings underneath, which if pulled by the user, corresponded each with a specific action the puppets could execute. However, since the movements of the puppets fully depended on the disposition of the strings, by changing their physical arrangement, one could “re-program” the machine, thus choosing a new action pattern for the puppets.
The previous is one of the first recorded example of a machine which encompasses the law of coding: changing the script without having to tear the whole object apart, and rebuild it.
For centuries, programming was considered a “forgotten” field, empty of major inventions. Until the 19th century when the French weaver Joseph Marie Jacquard developed a new type of loom, which used punch cards ( a card perforated with a specific design to describe data) to create thread sequences.
In the year 1837, Charles Babbage, an English mathematician and engineer, designed the Analytic
Engine, the first mechanical computer, able to perform calculations through programming. The theoretical proposal, since the device was never actually constructed by Babbage, was enriched by Ada Lovelace, English mathematician and daughter of the Romantic poet Lord Byron, who wrote the first algorithms for the machine convinced it had the potential to generate music and art along mathematical calculations.
In the last decade, the idea of teaching coding is resulting more and more sound for schools world-wide due to the the digital revolution. However, the subject has a long way to travel before becoming mandatory, since most educational institutions only offer discretionary programming courses. The next part of this post, will cover why the addition of coding to the school curriculum in elementary, middle and high school can provide multiple benefits for students.
The majority of people still believe that learning programming is suited only to those who will pursue an IT-related career. Nonetheless, coding has the capacity of coherently integrating other subjects, maths and science in a direct manner, through the development of analytical and pattern-identifying skills.
Yet surprisingly, a significant amount of creativity is also involved in the process, as the coder is the creator of a computing program and not its passive consumer.
“Artistic” decisions such as the graphic design, color scheme, and scope are fundamental to the program one is generating, hence computing is a mental exercise that stimulates brain function at 360 degrees, engaging both creative and analytical thought.
As we face a digital future, job markets view the ability to code as a valuable asset, that underlies problem-solving capacities, and solid perseverance, since coding problems often require remarkable trial and error. Coding is commonly defined as the “new literacy”, and can be a sound addition to educational curriculum of all grades, with the potential of improving cognitive functions in the young generations.
I find the subject extremely interesting. I wish the entire blog, since the very first paragraph, was dedicated to discussing the matter. I agree that programming must be a compulsory part of the curriculum at school.
Note that a programming language is yet another writing system, as much as traditional writing systems (like the alphabet) are. This means that it is also possible to encode any knowledge in terms of programs, as much as books are suitable for encoding all kinds of knowledge.
However, the vast majority of programming languages are English based, and the vast majority of sources related to programming are written in English, which might imposes a challenge: students must acquire a certain level of English proficiency prior to learning any programming language, which may delay the age by which a student acquires a programming language, and, consequently, acquiring a programming language at school turns into an second language acquisition process, whereas it must have been a first language one.
One solution to the challenge is to introduce programming languages based on a variety of languages (Portuguese, Spanish, Zulu, …). However, this solution has one crucial drawback, since it strips programming of its current universal nature.