Computer Science

Before College
Computer science fuels technological innovation and drives career growth, but waiting till college to learn the basics could mean a missed opportunity. Find expert-driven information, advice and resources to help students develop important computer science skills from kindergarten through high school.

About the Author

Maggie O’Neill

Maggie O’Neill is a researcher and writer living in Northern Nevada. She specializes in higher education content and has published multiple in-depth guides on educational technology and financial aid. She has more than fifteen years of professional experience in journalism, online media and higher education research.

Expert Sources and Partners

  • Angie Schiavoni, co-founder of CodeEd
  • Bradley Stewart, software engineer for Shareable Ink
  • Charlie King, PHP developer at CLEARLINK
  • Chris Martino, quality assurance engineer at SimpliVity Corporation
  • Justin Rohrman, senior software tester at Shareable Ink

Introduction

Computer scientists play a central role in our technological infrastructure. They develop hardware, software and other applications for use by the military, businesses and average consumers. This has made computer science one of the fastest-growing career fields in the U.S. today, with some occupations, such as software engineer, expected to grow an estimated 22 percent from 2012 to 2022. While this means tremendous opportunity for students and young professionals interested in the field, it also means increased competition, both at the college level and in the job market.

Many experts in computer science education tout skill development before college as the key to success. Students as young as six and seven are learning the logic behind computer programs and, in some cases, how to create simple programs of their own. Yet formal computer science learning remains a rare commodity in K-12 curricula. In 2011, just five percent of high schools across the country offered an Advanced Placement test in the subject. This gap has forced students to seek computer science education elsewhere.

The following guidebook helps students and parents identify and understand the multitude of opportunities available for learning computer science before college. Key elements include:

  • An in-depth look at why computer science is important to learn at the primary and secondary levels.
  • A breakdown of computer science information and resources at each level: elementary school, middle school and high school.
  • A detailed look at college prep. Specifically, how high school students can ready themselves for advanced computer science study at the post-secondary level.

Elementary

Young children have a natural gift for learning a foreign language. Advocates for teaching Spanish or Chinese in elementary curricula assert that kids soak up concepts and vocabulary more organically than adults. Computer programming, aka “coding”, includes very similar elements and incorporates multiple languages. Coding also facilitates student collaboration, creativity, design, presentation and problem solving skills. This has many parents asking the question: Why aren’t kids learning basic computer science and programming in school? Common Core and No Child Left Behind may seem like barriers, but alternatives exist.

Why Start in Elementary School

Teachers, administrators and principals interested in computer science and coding can look to open-source curriculum to help bring volunteer-based programs into their schools. CodeEd, a non-profit volunteer program that teaches principles of computer science and programming to girls in New York, Boston and San Francisco, starts as early as grade six. Its founders understand that an interest in computer science and an I-can-do-this attitude should be nurtured early.

“We’ve seen that children clearly have the capacity to learn complex computer science concepts from an early age,” Angie Schiavoni of CodeEd says.

Computer science can be introduced to students at a young age, but the concepts must be simple to understand, reports the Computer Science Teachers Association. Charlie King of CLEARLINK suggests that kids should start coding and delving into computer science as soon as they show an interest. Specific age may not be as important.

“Fourth or fifth grade is a fun place,” he says. “They have wild imaginations and don’t believe in limitations. My son is in fifth grade and he is loving it.”

Here are a few reasons to add computer science and coding to education at the elementary-education level.

  • By the year 2020, there will be an excess of 100,000 jobs in computing available beyond the number of college graduates skilled to work in the field, reports The Educators Room.
  • Most kids are high functioning when it comes to use of computers, yet only 57 percent of elementary schools have wireless Internet connectivity, according to the Computer Science Teachers Association.

Resources for Coding Basics

Many different organizations offer coding education for young children. Whether summers camp or online programs, they provide opportunities for children to develop practical computer science knowledge and skills.

“The best way for young children to learn programming is just for them to start doing it in a very concrete way,” Angie Schiavoni of CodeEd says. “It’s kind of like the best way for kids to play soccer is not to just learn how to dribble or just learn to pass the ball, but to get out on the field and play soccer, a lot. Then you can fine tune your skill set later.”

Like CodeEd, Scratch gives young students the chance to create interactive stories, animations and games, and then share them online. While designed for kids ages eight to 16, the program is appropriate for all beginning coders, as it uses visual representations to teach foundational mathematical and computational ideas. The site has sections for kids, of course, as well as for parents and educators. Since conception, an estimated 800,000 students have shared more than a million Scratch projects.

Scratch and CodeEd represent just two of the many online resources for primary schoolers interested in technology. The following resources may also prove helpful for students and parents:

  • Alice.org offers a 3D programming environment to help kids across all ages learn about object-oriented programming. Downloads, licensing and tutorials are available.
  • Codecademy.com offers anyone the opportunity to learn how to code for free using simple examples and methods.
  • Codepupil.com uses simple games, like its “Code Stitch”, and exercises to teach kids to code with HTML and CSS.
  • Code.org teaches the basics in computer science through a tutorial that uses drag-and-drop programming. A K-8 Intro to Computer Science course 15 to 25 hours long is available to kids as young as age six.
  • ComputerScienceForKids.com offers four different language-programming tracks for home-schooled students as well as curriculum for teachers that can be used in the public classroom.
  • DaisyTheDinosaur is an iPad app that introduces kids ages five to eight basic logic and allows them to drag one-word commands into the programming space.
  • Hackety.com teaches students the basics of the Ruby programming language, which is used for applications and websites. Online courses include An Introduction to Ruby and An Introduction to Programming.
  • Kodable is an iPad game to teach children as young as age five how to develop coding skills. Learning tools are also available for students as advanced as the 12th grade.
  • PluralSight knows that kids are already experts in technology and offers free courses such as Teaching Kids to Program and Learning to Build Apps with App Inventor.
  • Scratch.MIT.edu offers a visual programming language developed by the MIT Media Lab, allowing kids to build interactive animations, games and stories. More than 4.9 million projects have already been shared on the site.
  • TeachKidstoProgram.com provides suggestions for websites, software, hardware and books, such as “Python for Kids” by Jason Briggs, to use to develop children’s interest in programming.
  • TeamTreeHouse.com provides the chance to learn about web coding and design through more than 1,000 videos created by expert instructors. Knowledge is tested through interactive coding challenges and quizzes.
  • Udemy.com provides a number of courses for children including a fairly inexpensive Kids Coding-Beginner HTML that is tailored toward young learning styles and includes a final project.

In addition to fueling interest, founders of programs such as CodeEd and Scratch hope their efforts lead to long-term growth in the field.

“It’s time that computer science be taught on par with other scientific disciplines like biology, physics and chemistry,” says Schiavoni. “But we still have a long way to go to catch up. Estonia recently implemented a national program where 100 percent of first graders will be required to take computer science classes.”

Middle School

For students who missed the chance to code in K-5, middle school offers a wider range of opportunity. Slowly but surely, middle school teachers are incorporating computer science basics into the curriculum. It may not be teaching specific languages at this point, but merely introducing underlying concepts and fundamentals.

“The goal is to learn the theory of programming,” says Charlie King of CLEARLINK. “If you understand how to manipulate things with IFs and Loops, it doesn’t matter the language. Basic HTML/CSS/JavaScript is easy and allows you to make cool stuff at the simplest of levels. That can spark desire. If that grabs their attention, C++/Java/PHP or other more powerful languages are common in real world, and fun to play with.”

Kids at this age often develop an interest in computer science by creating video games or building their own websites. These types of projects use creativity to introduce and develop core skills.

“The message needs to be that computer science is about creating and building beautiful and useful things,” Angie Schiavoni of CodeEd says. “For example, web development, which we teach in CodeEd classes, is about creativity and self-expression, not just about learning a bunch of scary-looking tags.”

By the time students enter high school, they won’t be afraid of computer science. Instead, they’ll be in a position to embrace it, and even pursue advanced study.

Using Games to Learn

Kids in middle school love to game, whether by themselves or online. Batman, Tomb Raider and Call of Duty have made countless appearances under Christmas trees or at birthday parties. As a parent or teacher, gaming may seem a distraction from schoolwork, unless, of course, it becomes an educational opportunity. The following resources give middle-schoolers the chance to learn what happens behind the screen:

  • CodeAvengers.com allows users to create games in JavaScript, and offers tutorials such as Intro to Making Games, Intro to Graphics and Intro to Programming.
  • GameInstitute.com provides opportunities for game programming, game art and animation and to learn more about the Unity platform used in game creation.
  • The Hour of Code tutorial sponsored through the University of Colorado at Boulder uses drag-and-drop programming to help kids create a 3D video game. The program is now being used in many Boulder-based middle schools.
  • PlayBasic.com offers a 2D programing language and a variety of graphical features, such as image effects and mapping, for creating games.
  • StormTheCastle.com provides details about what goes into programming a game and what students can do to begin to prepare themselves for a career. A free tutorial is also available to make and design a game.
  • TeamLiquid.net takes a look at some of the different careers that could be available in gaming, including programming, artistry, designing and engineering.
  • TwoLivesLeft.com/Codea/ is an application that can be downloaded for an iPad and lets games and simulations be created using the Lua programming language.
  • YouthDigital.com is geared toward students ages eight to 16 and offers online classes in creating apps and games.

My First Website

Web development is another great way to practice essential computer science and coding skills. Students can begin to learn Hyper Text Markup Language (HTML), the backbone of a webpage, as well as JavaScript and Flash to add dimension. Here are four resources for middle school students looking to build their very first website:

  • CodeAvengers.com provides opportunities for students to build websites and apps using HTML5 and CSS3. Python courses are expected to become available in 2014.
  • CodeEd.org sends volunteers into a classroom using a provided curriculum and teaches girls how to code by building a website.
  • Lissaexplains.com provides tutorials to help kids create their own websites with HTML. Perl scripts and .htaccess files are available for more advanced users.
  • SMPlanet.com offers a seven-step tutorial for creating a website, including the basics of HTML tags and viewing and editing pages.

Other Resources

Game design and web site development are just two of the many computer science options available to middle school students. Have a child who likes to take things apart? Learning the basics of computer hardware may be the logical next step. Have a son or daughter interested in hacking (or hopefully how to prevent it)? Software development and cyber security are excellent to learn about at the middle school level. For more ideas and information, check out these online resources:

  • Edutopia provides its “7 Apps for Teaching Children Coding Skills” including GameStar Mechanic, Hopscotch and Scratch.
  • The Khan Academy offers Drawing and Animation, which makes use of JavaScript and the ProcessingJS library to animate and draw.
  • The “Make Your Own Flappy Bird” tutorial allows you to create you own game in as little as 20 minutes and is available through learn.code.org.
  • Polygon offers a story called “My Kids are Learning to be Better People by Learning How to Code Games.”
  • President Barack Obama emphasizes computer science skills in this short video on YouTube that helped to kick-off the 2013 Hour of Code campaign.
  • ReadWrite offers an article called “How to Raise the Next Zuckerberg: 6 Coding Apps for Kids.” Suggestions include trying out Alice and Code Monster.
  • ReadWrite reports on which groups are helping students learn about programming in the article “Schools Aren’t Teaching Kids to Code; Here’s Who is Filling the Gap.”

High School and College Prep

Just 30,000 students took the Advanced Placement test in computer science in 2013, according to Education Week. Less than 20 percent of those test-takers were female, about eight percent were Hispanic and less than 3 percent were African-American. Also frightening may be that in 11 states, no African-Americans took the exam at all, and in eight states, no Hispanic students took the exam.

Recognizing the need to draw students into the field, The College Board has decided to launch a new class called AP Computer Science: Principles, set to launch in the 2016 – 2017 school year. Where offered, it will introduce students to programming, but also give them a broad understanding of computing and its many applications.

“When I was in high school, there was very little available to students with vocational interest in technology,” says Justin Rohrman, senior software tester at Sharable Ink. “From what I gather, though, many public schools are now offering technology specific courses. Pursuing that will help you get a little ahead of the curve. I also encourage getting experience in the open source community with groups like Wikimedia Foundation (Wikipedia) and Mozilla.”

College Prep First Steps

Perhaps the best way to prep for an undergraduate degree in computer science is to cultivate knowledge and skills in mathematics and laboratory science.

“Having a firm grasp of mathematics and science will help if the student wants to pursue a degree even if they never end up using it in the ‘real world,’” says Chris Martino of SimpiVity Corporation. “Most CS programs are heavy in these areas with requirements in calculus, statistics, physics, etc.”

In addition to math and other lab sciences, high school students interested in computer science should explore as many specialties as possible. Not only to better understand the landscape, but to plan out college-level coursework. In addition to general computer science and programming, for example, some high schools have started to offer classes in database management, information assurance and security and fundamentals of information technology (IT). While still rare, they are on the rise.

“My high school offered three software development classes, and I took all three,” said Bradley Stewart of Shareable Ink. “There was a web design course, visual basic course and a C++ course. I would most definitely recommend them where offered, and would openly encourage all high schools to provide them. A focus on math is highly recommended throughout one’s high school education if planning to pursue software engineering.”

Many resources already mentioned in this guide provide opportunities for students in high school to pursue computer science. The options are countless, particularly online, and include sources such as Codecademy, Code.org, Coursera, Udacity and Udemy. Justin Rohrman of Shareable Ink has another suggestion.

“There is a fantastic program for young people called SummerQAmp,” he says. “This program is focused on developing real tech skills and exposing people to them before college.”

Programming Language Must-Haves

Students have many choices when it comes to programming languages. Some learn the basics of several languages as they progress from high school to college, while others concentrate on a single language used for a specific outcome. Examples of the latter include compiled languages, declarative languages, object-oriented languages, scripting languages and many others. The following seven programming languages represent the most common (and most important) a student can learn in high school:

  • C++ is a programming language developed out of Bell Labs and popular for its graphical applications. C++ adds objected-oriented features to its predecessor, C.
  • HTML is a hypertext markup language that is used in creating World Wide Web documents.
  • JavaScript was developed by Netscape and is used in creating interactive websites. Although similar to Java, it has many of its own unique features.
  • Perl stand for Practical Extraction and Report Language and uses a syntax in its scripting language that is similar to C/C++.
  • PHP, standing for hypertext preprocessor, is used in server-side scripting and web development and is open-source and embeddable in HTML.
  • Python is an object-oriented programming language with an open-source code that received its name from “Monty Python’s Flying Circus.”
  • Ruby is an object-oriented programming language that can be used for everyday programming and testing prototypes.

College Prep Resources

High school students may be on their own when it comes to finding opportunities for computer science and coding instruction. If they can’t find programs at their schools, they may be able to advance their knowledge through in-depth online resources or intensive summer camps. These often provide access to seasoned instructors either remotely or in-person:

  • Codenow.org provides opportunities for teenagers in low-economic areas to understand how to program through project-based learning. Nearly half of its alumni are female.
  • Girls Who Code offers a summer immersion program in computer science focused on mobile development, robotics and web design. Girls gain experience through demos, lectures and mentorships.
  • Hack Reactor offers a 12-week boot camp (with a hefty price tag) to hone software engineering skills. Previous coding experience is recommended.
  • Metis is a 12-week camp taught by instructors in Boston that focuses on HTML, CSS and Ruby on Rails. The camp is expensive, but makes scholarships available to women, minorities and veterans.
  • Silicon Valley Code Camp is offered free of charge and run by developers for developers to address topics such as branding or legal issues.
  • ScriptEd.org is another organization providing programming education in low-income areas through partnerships with volunteers.
  • Square expanded its coding camp from college-only to high school girls in Silicon Valley and provides instruction through Square engineers and additional teachers.
  • The SummerQAmp program was founded in 2012 as part of the White House Summer Jobs+Initiative and was the brainchild of GroupMe co-founder Steve Martocci and, yes, rocker-turned-actor Jon Bon Jovi and others. It offers internships to students who are interested in quality assurance, one of the many fields of computer science.
  • AmplifyCS is the first AP Computer Science MOOC offering blended online instruction with support, all free of charge. Students learn about Java and should be prepared to take the AP exam in computer science.
  • Coursera.org offers Beginning Game Programming with C# which includes the use of Unity, a popular game engine among indie developers.
  • DigitalMediaAcademy provides instruction in app development, game design and iPhone applications at camps available all over the U.S. Summer camps specifically available at the University of Chicago include Game Programming, Java Programming and Programming 101.
  • Openclassroom.stanford.edu is operated by Stanford University and offers free classes such as Design and Analysis of Algorithms, and Introduction to Databases and Practical Unix.
  • The Institute for Mathematics and Computer Science offers AP classes and university-level coursework in computer science as well as help preparing for the AP Computer Science and AP Calculus exams.
  • The University of California Online offers Computer Science for Science, Mathematics, and Engineering I that may be of interest to advanced high school or college transitioning students.

Conclusion

Remember, there are few reasons for waiting until college to begin developing your computer science and coding skills. The connected world is the world of the future and whether you decide to strictly work in computer science and programming, or cross over into fields such as health care or space science, you can help build and design the programs and technologies. The exciting thing is that many of these technologies remain to be seen. It’s already clear that programing and coding are the basis for so many new and progressive ideas, which begs the question: Are you ready to shape the future?