Computer programming, otherwise known as coding, is currently offered in a small fraction of US K-12 schools. There has been a push to change this recently, as evidenced by several White House initiatives, the heavily publicized Hour of Code program, and recent large scale adoptions of hands on STEM programs such as Project Lead the Way. Serious challenges remain. Many schools find themselves ill-equipped to set up coding for schools programs, citing reasons such as insufficient human capital, out-of-date equipment, and high speed internet issues. Setting up effective coding programs at schools can be challenging, and there as many issues to consider including curriculum selection, staffing, professional development, and funding.

One fundamental issue dogs nearly every program implementation. Trained engineers with coding backgrounds are needed to provide the level of rigor needed to support high quality computer programming courses. It is hard enough to find skilled engineers to handle private sector demand, and even more challenging to find those with in teaching. In this guide, we provide teachers and administrators with guidance on how to set up effective K-12 computer programming courses, whether they be comprehensive STEM curriculum implementations, daytime classes or after school clubs.

 

Cute pupils in computer class at the elementary school

 

Why should my school or district offer coding?

 
There are a number of important reasons why schools and districts should consider adding computer programming as a core course offering or after-school option. 

     

  • First, by the year 2020 there will be an estimated 1 million unfilled computer programming positions in the United States due to an insufficient number of engineers to meet the demand. Second, technology related disciplines make up over 60% of projected new jobs in STEM (Science, Technology, Engineering, and Math).
  •  

  • Third, computer engineering occupations rank among the highest-paying jobs for college graduates.
  •  

  • Fourth, computer programming teaches skills that are immediately relevant in today’s job market.
  •  

  • Fifth, computer programming builds proficiency in skills including math, science, logic, problem solving, teamwork, creativity, digital arts, and more.
  •  

  • Sixth, technology innovation is currently impacting early every vocation from law to farming, from teaching to political science, from business to construction, and from marketing to medicine.

 

What age is appropriate for coding?

 
Young boy using computer in classroom with students in background
 
Coding can be taught to primary students as early as age 5.
 
With the youngest learners, one simple way to begin is to adopt visual programming languages with drag and drop block interfaces. Once students reach age 8 they are often ready to move on to using text based programming languages and real coding environments provided that the curricula is fun and engaging.

 

How can my school or district bring coding to the classroom?

 
Two girls at coding class. They are sitting by the desk and using laptop, coding. Their female teacher helping with coding.
 

     

  • Tip #1: Participate in Hour of Code and Computer Science Education Week

     
    Hour of Code and CSEW arrive the week of December 5th to 11th, 2016 and this annual event is rapidly increasing in popularity. Both are programs designed to inspire K-12 students to take an interest in computer science, and there are some fantastic guides and tutorials available at Code.org that can help you get your program set up and ensure its success. Through Code.org, your school can utilize a variety of free coding programs from Khan Academy, Tynker, and more that are designed to be administered in a work workshop timeframe and involve the least amount of technical knowledge from teachers and proctors. Introducing coding this way to your school is an excellent way to begin raising awareness and gaining the support of school and district stakeholders.

  •  

  • Tip #2: Set up school or district funded after-school coding classes or clubs

     

    • Option #1: Many schools are putting together their own after school coding classes and clubs through generous grants from Code.org and their Professional Learning Partner program. The program provides funding to bring trainers to work with your staff and to equip them to teach Code.org’s extensive K-12 coding curricula with the objective of creating self-sustaining programs within 3 years.
    • Option #2: Many forward thinking schools and districts want to offer a higher level of coding education, which involves using real languages, professional tools, and experienced engineers to deliver the content. In some cities, schools can contract with local coding academies that will set up programs at your school. A less expensive option is to use online academies that provide self-paced online curricula, but that support the curricula with live engineers who can interact with school proctors and students via screenshare.

     

  • Tip #3: Set up Parent-Pay Enrichment Programs

     
    Schools and districts that offer parent-pay after-school enrichment programs can look for local providers that offer coding, robotics, or other tech related courses. If none are available, you could consider setting up your own parent pay after-school program with resources like Code.org, Scratch, or on the higher end blended learning providers such as CodaKid.

 

A multi-ethnic group of elementary age children are in the computer lab using laptops. A little boy is watching a video and is listening to music.

 

General School-Based Coding Tips

 

  • Tip #1: Make it fun!

     
    In our eyes, making coding fun is the number one rule in teaching computer science to kids. Children will often start out with a coding tutorial, but quickly lose interest when it becomes too academic and the projects are not interesting enough. Many coding platforms, in fact, still use the “Hello World” method in which students learn to print the words “Hello World” on a screen. While this approach may work with college students in a credit-conferring environment, it generally backfires spectacularly with K-8 populations. We recommend staying away from curricula that is too rigid and academic, and to focus instead on fun, project-based courses that match children’s interests. Kids like to build video games, apps, and Minecraft mods. Still others might want to build their own webpage or want to code the AI of a robot. At CodaKid, we prefer to teach coding by building video games and apps as they provide students with a fun and interactive way to learn coding concepts. Many youth coding clubs and academies are starting to move in this direction. Please let us know if you’ve found other good ones for us to review as we will be updating this guide with the latest products and services.

  •  

  • Tip #2: Pick one language and stay focused

     
    Many school administrators that we interact with read up on the hottest, most popular programming languages, and want to expose their students to as many of these languages as possible in a short time period. In our experience, this is not the best way to approach CS instruction. We have found that it is a far better to study one programming language and to gain knowledge and proficiency rather than developing a shallow understanding of several languages. Once a student has mastered one language, it is easy to learn new the syntax of new languages. Introducing multiple languages in too short a time span can lead to confusion and force the student to concentrate more on syntax rather than computer programming concepts.

  •  

  • Tip #3: Be consistent

     
    Many schools participate in Hour of Code and expose students to a short workshop once a year. While this is an easy way to introduce students to coding, this approach is not an effective way to build coding proficiency.  In many ways, it is the equivalent of introducing a student to Mandarin Chinese for an hour once a year, and then not visiting the language again until the year after.  We recommend instituting consistent CS programs that give students the opportunity to learn new concepts, build independent proficiency, and then learn more. The most effective coding programs meet at least one time per week, and several times is preferable.

 

Curriculum Recommendations

 
There are a number of free and paid options that help your school establish a world class coding program.
 

Scratch (Free)

 
Scratch
 
MIT Media Labs Scratch is a fun, visual programming platform that teaches coding concepts while allowing students to build fun games through an easy and intuitive drag and drop interface. Google CS created some well-crafted lesson plans that families can use that include pacing guides. Best of all, other students’ Scratch projects and their “code” are freely available, and it is fun and educational to study how 2D games like Asteroids, Galaga, PacMan, and more were created. Scratch also allows students to add their own art, animations, sound effects, voice-over, and music, making it a dynamic and flexible educational tool. Scratch does not provide support from engineers at this time.

 
 

Code.org (Free and Paid)

 
code
 
Code.org is more modern and slick than Scratch and features a closed platform environment designed for ages 6 and up. It has been featured by Hour of Code and is used by many public schools to teach introductory computer science. Code Studio has age appropriate modules using drag and drop interfaces with the option to write text-based code if desired. Code.org has also partnered with Minecraft, Tynker, CodeBattle, and others to create engaging modules that simulate the experience of creating games and apps. The strength of Code.org (aside from the fantastic fact that it’s free) is that they feature gamification, they have partnered with high-interest franchises such as Minecraft and Star Wars, and they have a well thought out sequential approach to teaching code. The downside is that you never quite experience the feeling of building something from the ground up and you always feel confined to a pseudo environment which seems to encourage drag and drop blocks rather than text. Code.org does not provide support from engineers at this time.

 
 

Khan Academy (Free)

 
Khan Academy

Khan Academy has created a series of well-produced videos that are designed to provide free education to the world. Backed by Bill and Melinda Gates Foundation, Khan Academy has begun a series on computer science that teaches JavaScript basics, HTML, CSS, and more. There are video tutorials on a number of topics ranging from making animations with JS, creating dynamic webpages, building simple 2D games and visualizations with JS, and more. At this time, many of the tutorials do not contain videos, but instead provide text instructions and manuals better suited to high school and college students. We expect great things in the future from Khan Academy as they continue to build out their curricular platform. Khan Academy does not provide student support at this time.

 
 

Bitsbox (Paid)

 
BitsBox
 
Bitsbox provides a subscription based service that ships monthly boxes to your classroom. Each box contains lesson plans that teach kids how to code games and apps in JavaScript via a virtaul tablet on the BitsBox website. To covert the kids’ code to a mobile device all you have to do is zap the bar code on the screen which activates the app.

 
 

Osmo Coding (Paid)

 
Osmo-Coding-Girl-Overhead-2-1024x768

An innovative entrant into computer science education, Osmo Coding combines Legos, coding, and video games. Osmo teaches children computational thinking by using tactile magnetic blocks which allow the user’s character to navigate a series of challenges and puzzles in an iPad game. While the manual specifies that the product is designed for students ages 5 to 12, we think that Osmo is much better suited to younger ages of 5 to 8. We love that Osmo introduces a physical, tactile approach to coding instruction and expect great things from this company in the K-2 space.

 
 

CodaKid (Paid)

 
CodaKid-Minecraft-Coding-Course

For children interested in Minecraft, CodaKid’s Mod Creation: The Adventure Begins will take their natural passion for Minecraft and channel it into a productive endeavor – Java programming. CodaKid teaches kids ages 7 to 15 to write real code using professional grade programming tools. One unique feature of the service is that CodaKid provides online support from a friendly team of engineers who answer questions and even do screen-share sessions with students as part of the service. The academy is launching an App Development class that will teach kids how to make a mobile game app from the ground up using JavaScript. CodaKid’s teachers have all passed rigorous national background checks and are experts in the course content. For pricing information for schools, academies, and summer camps, you can contact CodaKid at hello@codakid.com

 
 

Sphero (Paid)

 
09-sphero-sprk
Sphero allows children to program toy robots using drag and drop, block based coding interfaces on your mobile device. Their Star Wars BB-8 robot as well as the original SPRK+ are sleek and modern, and are an excellent way to teach younger children computational thinking.

 
 

Visual Programming versus vs Text Based Programming Tools

 

  •  

    Option 1: Drag and Drop

    Drag and drop programming courses are the tricycles of coding.  They are designed to be fun and easy, but are also designed to be tools that you outgrow. Platforms like Code.org, Scratch, Tynker, and others believe that typing should not become an impediment in computer science education, and that kids can learn many of the same coding concepts through a more visual, tactile approach.

  •  

  • Option 2: Closed Platform – Text Based

    Some online coding courses such as Code.org and Khan Academy offer several text-based options in which students type code into their closed platform learning management systems. These courses will typically teach a coding language on a proprietary LMS to reduce the chances of student errors and to build a tightly-knit error messaging system that reduces the chance of bugs.

  •  

  • Option 3: Real text based Programming using Professional Tools

    Some programs such as CodaKid use real programming languages and professional grade coding tools. The advantage of this approach is that it gives students the experience of working with professional text editors and real languages. By teaching students real coding languages and using the same text editors that the professionals use, students learn valuable, transferable skills. The best courses also provide online support and screenshare from live engineers who walk students through solutions to their bugs and other issues.

 
 

What computer do I need to teach computer science at school?

 
Many online coding courses such as Code.org and Khan Academy are web-based and only require a high speed internet connection. Web-based courses do not require computers with much processing power and will typically run with nearly any computer manufactured in the last 4-5 years, including options like Google Chromebooks.
 
Providers of courses with real coding tools require a Mac or PC computer with a recommended 4G of RAM and a high speed internet connection. The benefit is that children will learn how to code using the same professional grade tools and real coding languages used by major software companies around the world. At some point in children’s computer science journey you will likely reach a time when he or she has a strong desire to use real programming environments and cutting edge tools. Some families decide to do this from the start, while others use web-based tools to begin and then transition to professional grade tools at a later time.

 
 

What programming language should our school choose?

 
Best-Programming-Languages-For-Kids-2
 
There are a number of programming languages that are beginner friendly, and there is great debate among computer science educators about which is the best. For straight up kids coding, we like both JavaScript and Python, but we gravitate towards JavaScript because there are so many educational resources that use it. JavaScript is the language of the Internet. It makes websites interactive, and it is fun and easy to build browser-based games and apps with it. There are a growing number of visual programming courses, robotics courses, and real text-based game and app development courses using JavaScript that you could keep your kids quite busy for several years with all of the options available.
 
Here are some curricular pathways to consider:
 
Ages 4-7

  1. Code.org (Code Studio)
  2. Osmo

Ages 7-12

  1. Code.org (Code Studio)
  2. Google CS First – Scratch
  3. BitsBox
  4. CodaKid – App Development

Ages 12-18
 
If your school opts to use platforms like Code.org or Khan Academy, you will use the visual programming tool Blockly and then later graduate to languages like JavaScript and Python, although in controlled, closed platform environments.
 
For schools that are interested in text based programming classes using real tools, we recommend languages like JavaScript and Python.
 
If your student population  interested in Minecraft Modding, then Java or JavaScript will be the language you will likely choose depending upon course and platform. Conversely some of the best DIY robotics kits use scripting languages such as Lua and Scala. If your child is interested in building a website, you will want to consider HTML and CSS, and if she is interested in building apps you might want to consider a language like JavaScript.
 
At CodaKid we focus on Java for our Minecraft coding classes, and we use helper files to reduce some of Java’s more difficult commands. We have found a highly effective way to teach Java as an introductory language, and kids’ natural passion for Minecraft provides them with the extra motivation to learn complex concepts like Booleans, conditional, loops, variables, and methods – all concepts that can be found in nearly every other programming language. Java also happens to be the current language of the Computer Science AP exam.
 
JavaScript is also one of our favorite languages. While a must-learn tool for front-end developers, it has become one of the hottest languages in the world due to the increasing popularity of its server-side language (node.js). JavaScript was used to make PayPal and a massive number of front-end websites. Below is a screenshot of the mobile game app that CodaKid’s online students learn to build from the ground in our App Development with JavaScript course.
 
Kids coding course with JavaScript

What are some examples of coding concepts that children learn in coding classes?

There are many coding concepts that are found in nearly every programming language with some minor differences in syntax. Below we have given you two common coding concepts that are found in nearly every language. For ease of illustration, we have written this in pseudo code.

 

Conditionals


Conditional statements allow a computer program to execute a certain section of code based on whether a condition is true or false. Java uses Boolean values to evaluate these conditions. One of two Boolean values (True or False) is returned when an expression is evaluated by the computer.

 

Here is a snippet of code that sets a daytime or nighttime texture depending upon the time of day in Minecraft:

 

conditional

 

In the above example, if it is daytime, the computer will use a texture to make the Minecraft world appear as though it is daytime (sun, visible clouds, shadows, etc). If it is not daytime (indicated by the “else” command), the computer will use nighttime assets.

 

Loops

 

Another common coding concept that can be learned through Minecraft coding is called a Loop. In this example, a “While Loop” continually performs a command while a particular condition is true, and discontinues the command when the condition is no longer true.

 

Here is an example of how a While Loop might appear in Minecraft coding:

 

loop

 

In this loop, a player will be able to fire arrows as long as the number of arrows in her arsenal is greater than zero. Once the number of arrows becomes zero, the condition returns a false value (because the number of arrows is not greater than zero) and no arrows can be fired.

 

Conclusion

 

In response to the massive demand for engineering skills in the workforce, many schools are moving quickly to develop plans for computer science, either in the form of daytime courses or after school classes and clubs.
 
Setting up high quality computer science programs at schools has many challenges. It is hard enough for technology companies to find quality engineers, and most people with technical skills gravitate towards high paying jobs in the private sector rather than teaching positions positions.
 
Coding is not easy. Computer programming requires patience, persistence, and steadfast determination. If you implement a program incorrectly, kids can easily become frustrated and discouraged, and teachers can become exasperated and.
 
If your coding curriculum is implemented correctly, however, you can inspire students to build their skills and become budding young technologists.
 
We hope that you found our article helpful. We love conversing with school administrators and teachers. If you had any questions or wanted to share some best practices that worked for you, please email us at hello@codakid.com.

 
 
 

Leave a Comment