Blog Post

A Multifaceted Approach to Teaching Coding

Block-based coding is the most popular coding language in K-12 classrooms. However, our current block-based coding approach lacks the introduction of syntax along with a strategic progression toward text-based coding.

image of sample block code


Blocks are an abstraction of text-based code. In robotics and mobile application building, the use of blocks significantly speeds up the coding and troubleshooting process for developers. Even in authentic coding realms, programmers often find themselves coding original blocks to add specific functionality to their programs. Despite increased exposure to block-based platforms in the elementary classroom, students are not learning the text-based code that is fundamental for each block. In order to push computer science education forward, teachers need to introduce text-based coding and syntax to students alongside the key principles for block-based coding.

The good news is that teaching basic syntax can be made easy! I am not suggesting that K-5 teachers learn an entirely new platform. What I am suggesting is that teachers learn some basic functions in either Python or JavaScript to teach along with block-based coding in order to get students acclimated to syntax and text structures within programming languages. It is not necessary to learn the entire Python or JavaScript languages. Identifying a set of quick lessons with corresponding practice time in the classroom is a great complement to block coding approaches.

For Python, both and offer helpful introductions. The basic lessons cover print function, parentheses, for loops, python output, data types, and operations. A simple IDE (integrated development environment) to use in the classroom (without all the confusing bells and whistles) is IDLE, which is free for beginners. Microsoft MakeCode is a great program for block coding and also has a button that shows the Javascript equivalent of each block. Visual Studio IDE is probably the best platform to facilitate a JavaScript-based approach similar to the aforementioned Python design. Some short activities such as simple “Hello World” print functions as well as computational algorithms combined with print output functions would introduce tech space coding while working through block-based curriculum.

Teachers must help create a path for students’ future learning by combining text- and block-based coding efforts in order to teach syntax and logic through language and operations. This multifaceted approach allows teachers to learn text-based programming languages in a scaffolding manner instead of through a fire hose, thus reducing anxiety. For students, this approach yields an increased skill set and an understanding of concrete relationships between concepts in multiple paradigms instead of our current reliance on block programming.

Do you emphasize text-based coding alongside block-based coding? Let me know in the comments!

Leon Tynes teaches technology to K-8 students at the Academy of Math and Sciences-Desert Sky charter school in Phoenix, Arizona. Previously, he taught AP Computer Science Principles, App Development, 3D Modeling (Unity/C#) and Digital Media in the New Haven Public Schools District, Connecticut. Leon has worked closely with the College Board to provide diversity perspectives in CS education and participated in their annual Facebook APCSP Teacher Summit. He is also a Mobile CSP Master Teacher and was an APCSP reader for the past three years.



Submitted by Martha Haddad on Thu, 03/12/2020 - 9:29 am EDT

We require all of our 9th grade students to take our Intro to Computer Science course.  We cover high level Scratch, App design using MIT App Inventor and the test-based language, Processing.  We are an all-girls grades 5-12 school.  We find that Scratch and App Inventor is an nice way to expose the students to some of the major programming concepts such as variables, functions, conditionals and loops.  We chose Processing because it is a Java based language with visual output.  Over the past 6 years, we have found that our students really love learning Processing. 

In our second year course (not required, but very popular) the students continue learning Processing and cover conditionals, loops, functions, objects and arrays.

Both courses are project based and don't require a lot of outside of class work.