Geo Miller, Codeslam; Shannon Landin, Codecraft Lab

Every student should have an equal and early opportunity to learn

the basics of computer science and take part in computer programming education. This is a very big idea no doubt, and for most states, including Florida, the idea of computer science for every student is a new and a mostly unexplored topic.

Responding to an outcry of parent demand, and the irrefutable reality of an unstoppable high-tech and software-defined modern world, there’s been a major shift in thinking by states and school districts about how to make computer science options available within core academic requirements. In the next 10 years, each of New York City’s public schools will offer computer science for all high and middle school students and Chicago has announce a plan as well, “arguing that it’s about national competitiveness, and about democratization.”

Thursday, December 3, 2015 the “Computer Coding Instruction” senate bill 468 passed the Education Pre-K — 12 committee of the Florida Legislature. Its terms include requiring high schools to offer computer coding courses; requiring the Commissioner of Education to identify the computer coding courses that satisfy two credits of foreign language instruction under certain circumstances; requiring Florida College System institutions and state universities to recognize the credits as foreign language credits, etc.

Per this bill, as of July 1st 2016 students will be able to choose computer programming courses instead of a foreign language in an effort to help Florida schools add more technology and digital instruction.

What is language?

Two implications are made by equating computer coding courses with foreign language courses:

That computer coding involves learning languages. That computer languages can satisfy the objective of learning a foreign language.

The Oxford Dictionary includes three major definitions of language:

A method of human communication, written or spoken, in a structured way. A system of communication used by a region or community of people. The manner, style, or specific vocabulary used in writing or speech.

Oxford’s definition only mentions language in the context of computing as a special case: a system of symbols and rules for writing programs or algorithms.

In the world of computing, languages humans use to communicate with each other are often referred to as natural languages. Natural Language Processing is a field which attempts to automate the understanding of human speech with a computer. At the simplest level, this can be seen in the real world with tools like Auto-correct. At the highest, IBM’s Watson attempts to understand human language and queries and respond as one as an expert. Personal assistants like Siri, ‘OK Google’, and Cortana have begun to bridge human-computer interaction with a focus on human context with natural language as the interface.

Context: the circumstances that form the setting for an event, statement, or idea, and in terms of which it can be fully understood and assessed.

It can be an uncomfortable assertion to say that a programming language is anything like a natural language. I’m not sure how I would ask to go to the bathroom in python, or how I would say “Have a nice day” in C. Computer languages don’t live in the world of humans, and currently don’t serve to express the concepts of daily human needs. Even though there is no far away land where an exotic culture communicates using Haskell, programming languages exist in a context foreign to humans.

Programming Languages are Human Languages

It may seem odd, but computer programming languages are not primarily created for computers to communicate — they are our tools to communicate with them.

The fact that many programming languages use English vocabulary can be misleading. They are not written in English. if, else, for,while, derive some inspiration from the English definitions, but the rules for constructing sentences with them are quite different from English, and vary even between programming languages. These words could be replaced with any symbol and have the same function. The vocabulary is only one part the grammar of a language.

Similar to the language of mathematics, programming languages are created to facilitate the expression of thoughts and ideas in particular domains. Everyone is free to make new languages.

A common thread exists in any definition of language: a tool for communication. Regardless of the context the language exists, it serves to communicate thoughts and ideas using a system of symbols and rules. Learning any new language requires one to learn a new way of thinking, to communicate with someone or something else.

As more people come to rely on technology, do not forget to ask: Who’s going to solve the computer science problems associated with defining those tasks? Who will speak the languages to communicate those solutions?

About the Authors

Geoffery Miller (Geo) is the founder of codeslam. After teaching programming to non-majors at Florida State University for 5 years, he is making learning to code a fun and creative process by exploring the art of programming.

Shannon Landin is the founder & CEO of Codecraft Lab. Passionate about empowering young people with modern STEAM skills, she is creating high-quality programs that foster social connection, and instill life-enhancing digital skills through computer science and programming education.

This article is cross-posted from the Codecraft Lab Blog.