4 Tips to Encourage Summer Programming

The school year is winding down, but that doesn’t mean the learning has to. Kids who continue learning through the summer see learning benefits for up to two years afterward. You can help your students continue to grow as learners by encouraging them to continue programming at home. Here are a few quick and easy tips!

1. Send home Kodable log in details for parents.

Parents will be looking for educational programs to keep their kiddos occupied this summer. You can easily print log in instructions for all your students and send home instructions for parents to facilitate more programming!

2. Start a Summer Coding Challenge

Challenge your students to set their own learning goal for the summer! Students will share something they learned this year and something they want to learn over the summer. They will set a goal for the number of programs they want to write and can even track their progress to share with their friends next year!

3. Celebrate a year of learning with certificates for students

Recognize your students’ achievements with a certificate they can take home. Proud learners love showing off their skills! Encourage them to keep learning with positive reinforcement.

4. Open next year’s concepts for early practice.

Get students excited for next school year by letting them explore the concepts they’ll be learning next year. You can easily adjust the grade level on your classes, so they’ll have access to the next set of units without moving too far ahead. Early access will give them a point of reference when you’re teaching the concepts next year!

Keep up all the great work and enjoy a fun and well earned summer vacation!

via GIPHY

 

Let’s Give Computer Science to 100 Schools!

At Kodable, we believe in the power of computer science. Not only the ability it gives students to be successful in the world, but in the power it has to change the world. Computer Science is a truly transformative subject. Never before has something existed with such an ability to create value from nothing. You could build the first versions of Facebook on a $30 Craigslist laptop in a Starbucks! As of the writing of this article, Facebook is worth a little over $400 BILLION dollars.

However, as a for-profit company, we are faced with the reality that some of the schools who could use Kodable most, simply do not have the means to afford it. There are a lot of great free options available as introductions, but they fall short of providing the well-rounded education a child would need to really excel in computer science.

Students in underserved communities face a myriad of challenges that have a negative effect on academic achievement. Students who are already performing behind their peers are now at risk to fall even farther behind without equal access to Computer Science. Computer Science education improves critical thinking and problem solving skills, which translate across content areas and to life outside the classroom.

The options for these schools are less than optimal. Grant processes are long and tedious, and not all schools have the ability to ask parents or donors for financial support. Now, faced with the realities of educational budget cuts in the United States, the problem is only going to get worse. We’ve always believed EVERY student deserves the opportunity to learn to code. So today we’re going to do our part to make it happen.

 

GiveCS2What are we doing about it?

I’m incredibly happy to announce the Kodable for Everyone Initiative. In order to raise awareness for the impact Computer Science can have in the lives of our nation’s children, we want to give Kodable to 100 schools in underserved communities.

For every Parent purchase of Kodable, 30% of the proceeds will be donated toward one year of Kodable for a school.

For every site license purchase, we will donate a year of Kodable to an underserved school.

 

How can you help?  

You can help make computer science education happen by sponsoring Kodable for a school in an underserved community. Give as little as $1. Every bit helps. 

For every $1000 donated, we will give the entire Kodable curriculum, free of charge, to one school in need.

Kodable is used all over the world, so your donation could go to someone anywhere around the globe – from the United States to Haiti to Vietnam. You can make a difference.

  • Sponsors will receive two BRAND NEW Kodable Fuzzes only available to donors – adaFuzz and turingFuzz. These commemorate two iconic figures in computer science – Ada Lovelace and Alan Turing.
  • You’ll also receive updates on the school your donation is benefiting.

LimitedEdition

Can Computer Science benefit your school?

We will be selecting schools as we meet each $1,000 milestone. Schools with financial hardship, below proficient test scores, large ESL student populations, or a focus on inquiry goals will be highly considered. We’re looking to help schools with a passion for STEM and Computer Science as an innovative way to improve the lives of their students.  

Apply Here

Our perspective on “The Gender Gap”

Recently, we announced our Elementary Computer Science Standardsand I made the following statement:

More girls are not going to be encouraged to code just from a game. Without the instruction and encouragement of a teacher, students will self-select for computer science the same as before, and we will end up with the same demographically stunted, male dominated workforce we have now.

This apparently angered one of our readers, who accused us of being an “entire company is full of backwards leftists who are trying to encourage girls instead of boys.” He went on to articulate that a male-dominated workforce was not a problem.  Even though this person has probably never even used our product, I saw this as an opportunity to really articulate our view on the gender gap in computer science. I have gone in to more detail below in the hopes that it can help others engaged in this unfortunate debate around the country and around the world:


Say you have an array of 100 strings, 49 of which are the letter “M” and 51 of which are the letter “F”. You need to write a program to grab 10 objects out of this array at random, ignoring the value of the string. You run this program, and every time you do it pulls 8 “M”s and 2 “F”s. You run it 50 times, and every time get the same results.

There’s one of two problems. Either

  1. You wrote the program to intentionally discriminate against “F” (I hope not)
  2. You have a bug in your code.

This is what’s happening in computer science right now. The population of the United States is 51% female, and the population in computer science is less than 20%. (1)

The “bug” in computer science can be seen by simply walking down the isle in any toy store in America. Boys are funneled to Legos and blocks, girls are funneled to rows of bright pink dolls. From the time we are born, children are expected to fit into gender and social norms.

Sayings like, “Sugar and spice and everything nice, that’s what little girls are made of,” and “Boys will be boys,” are a prime example of such. We expect boys and girls to fit into these roles defined by society, our parents, and our education. Until women entered the workforce, the roles were strict and quite defined.

Since the 1960’s, women’s workforce equality has been gradually increasing. Women made up 52% of the workforce in 2014. (2) However, we still have a long way to go. Women make 80 cents for every dollar a man makes (3), childcare is still a major issue for women in the workforce, and since 1984, the number of women learning about computer science and STEM has dropped.

In 1984, women accounted for 37% of CS undergraduates, while in 2011, they made up only 17%. Studies indicate our defined role for a computer scientist has caused much of this decline. Marketing messages depict men as owners of personal computers and gadgets. Girls are ALREADY being artificially encouraged NOT to code before they can make the choice themselves!

I’m fundamentally against targeting ANY group specifically, and I’ve taken great pains to make sure my company never does that. We regularly speak with both boys and girls to ensure Kodable is appealing to both of them. We were especially careful in the development of our upper elementary content, because this is when kids start to become aware of social norms and expectations. Not only does talking with kids help us bridge the gender gap, but they have awesome ideas like rainbow geysers and better, kid-friendly terminology for concepts.

I want to include EVERYONE in computer science. When we started Kodable, my co-founder Grechen Huebner and I looked around at what was available for kids to learn to code. She was not pleased with the selection for girls. Most of the tools and programs available we’re quite “boyish”. Games played into what we think appeals to boys through dark color pallets and a logical progression without much emphasis on narrative. Grechen and I set out to make something that would teach and engage all students.

Since the start of Kodable, we have received criticism for many things, including targeting boys or girls over the other. However, we’re thrilled that the gender percentages of Kodable users reflect the population of men and women. We have just over 50% female users. We’re still meeting our goal of teaching computer science in a way that appeals to both genders equally. The Kodable team includes 3 women and 2 men.

Equal access to quality education is something very near and dear to our team’s heart, and it will continue to shape the way we build and market our product.

All of this comes with the caveat that you actually believe that boys and girls are equally capable of becoming programmers. Because if you don’t, I honestly don’t want you using my product anyway.


Sources:

  1. http://www.computerscience.org/resources/women-in-computer-science/
  2. https://www.bls.gov/opub/reports/womens-databook/archive/women-in-the-labor-force-a-databook-2015.pdf
  3. http://www.americasjobexchange.com/career-advice/women-and-equality

12 Questions on Coding and Startups at Kodable

A couple months ago, one of our longest-tenured Kodable users sent me an email for a student in her class. She wanted to learn more about computer science, problem solving, and startups, and had a few questions she wanted to ask me. I wanted to share my answers with the rest of the coding community in the hopes that they might help other young learners out there 🙂

Student Q: How do you use your programming skills to be a better problem solver?

Jon’s Answer: Programming is nothing more than a problem that you have to solve with code! When you program, you learn very quickly that the best way to solve a problem is to break things down into a series of smaller problems that are much easier to solve. The same is true for problems that you face in your everyday life. If your room is messy, its easiest just to get started by picking up one thing and putting it away than staring at the room trying to figure out how you’re going to clean up this huge mess!

Student Q: What steps do you follow when you are problem solving?

Jon’s Answer: When I program, I have to break everything down into a sequence of smaller tasks. That lets me think about the problem in smaller “chunks” instead of being overwhelmed by some huge programming project. After I’ve broken down the problem into a series of tasks I have to complete, then I just start with the first one! Every time I complete a task, I then stop and make sure that I did it correctly, and I’m still moving towards the goal I set out for myself when I started. After I’ve completed all of the tasks, I remember what my original goal was and make sure that it was accomplished.

Student Q: How does computational thinking help us understand our world and solve problems?

Jon’s Answer: I started learning how to program when I was 6, and although I didn’t realize it at the time, I learned to think of everything in terms of ‘if I do this, then that will happen’. This was so important! It helped me be more successful in everything I did, because I always thought about the effects of my actions before I did them. This helped everywhere from taking math tests to troubleshooting when my wifi wasn’t working. Also, computers are everywhere! Computers think computationally (obviously), and if you understand how they ‘think,’ it’ll be much easier or you to work with them.

Student Q: Which one of the problem solving steps is your favorite/ easy for you?

Jon’s Answer: I like breaking a big problem into smaller tasks. Its like a strategy! You get to take this big complicated problem and make it much more straightforward.

Student Q: Which step is your least favorite/ hardest for you?

Jon’s Answer: I enjoy completing tasks, so don’t always like stopping after every task and making sure that I’m moving towards the right goal – I just want to keep going! But this is very, very important. You can get so caught up in each task that you can end up moving in the complete wrong direction. Before you’ve noticed, you could have spent two or three hours working on the wrong problem, and thats never fun.

Student Q: Is feedback helpful when you are coming up with solutions?

Jon’s Answer: Of course! Its always helpful to get a second set of eyes on a problem you’re working on – especially if you’ve been working on it for a long time. You just want to make sure that you accurately explain the problem to whoever is giving you feedback, or they could give you the answer to a different problem!

Student Q: What do you do to plan/ prepare your solution to a problem?

Jon’s Answer: I try to map out everything I’m going to do in a set of easily completable tasks. It is very important not to make these tasks too big, you should find things that can be done relatively quickly. Then I order them so I know which tasks I need to complete first, second, and so on.

Student Q: What are some ways to reflect or evaluate when you solve a problem?

Jon’s Answer: You should always know what you were trying to do when you solve a problem. Ideally, this means that you clearly defined what ‘finished’ was before you even started solving the problem, that way you can easily determine if you accomplished your goal. Its also a good idea to look at your problem solving process and find areas you can improve next time. Did you spend too long in one area? Could you have skipped a step? Did you keep finding things to do that you hadn’t planned for? This kind of experience is incredibly valuable to becoming a better problem solver.

Student Q: Why do you think it is necessary to ask questions before you find a solution to the problem?

Jon’s Answer: Nobody knows everything, and even if you think you have all of the answers you might not! The only way to really know if you’re going about solving the problem correctly is if you ask questions. Sometimes there are details that you might have overlooked, or you might have misunderstood a part of the problem.

Student Q: Do you think that it is essential to follow a process when problem solving?

Jon’s Answer: Instead of a “process,” I think that it is essential to have a “problem-solving game plan.” I used to play football, and our coaches would always have a game plan before the game. One of the most important aspects of a game plan is that it needs to be flexible, because you can’t anticipate what’s going to happen during the game. Similarly, every problem you face is going to be different, so you should always have an idea of what kind of strategy you’re going to use when you problem solve, but be flexible enough to adapt it to individual situations.

Student Q: How did you come up with the idea for Kodable?

Jon’s Answer: I started to program when I was 6. This was awhile ago, long before there were so many kid-friendly resources available! My first computer used a text-based operating system called MS-DOS and didn’t even have a mouse. However, after a few years, I lost interest, and moved on to other things. When I got to college, I was able to teach myself how to program really easily because I had learned how to think like a programmer when I was so young. When I was working with my cofounder on another idea, we kept having parents tell us how they wanted to teach their kids how to program, but didn’t know how or where to start. We put two and two together, and came up with Kodable!

Student Q: How long did it take to make the whole company?

Jon’s Answer: My cofounder and I started working on Kodable in 2012, so we’ve been working on Kodable for a full 4 years now. Kodable’s birthday is actually the same as mine, October 20th. 😄

Introducing Elementary Computer Science Standards!

Computer Science has a problem. In the past few years, educators have been hoodwinked by flashy games and deceptive messaging into believing that students could be “taught to code” by letting their students play a game for an hour. Unfortunately, like in every other subject, this isn’t the case. No, you cannot teach your students computer science with just a game.

When coding was first introduced a few years ago, a self-driven, easy to use game was necessary. It needed to be introduced in a quick way for teachers without any previous CS knowledge to be able to fit it into their lessons. However, over the past few years, things have changed. Over 350 MILLION people have written a ‘line of code’ and millions of teachers have seen the impact CS can have. Computer Science is the single most important topic being taught to the youth of the world today. So why isn’t it being taught consistently?

At Kodable, we have unprecedented influence on how computer science is being taught in schools. We have been used in over half of the elementary schools in the United States, and are the most widely used elementary programming curriculum in the world. Which is why it is so discouraging to hear so many teachers tell us that an hour of coding in December is enough or ‘We just let them play a couple free coding games, we didn’t really want to set up a class or teach a lesson.’ Playing a coding game without structured instruction completely misses so many of the benefits computer science education offers, and students are being failed in the process.

More girls are not going to be encouraged to code just from a game. Without the instruction and encouragement of a teacher, students will self-select for computer science the same as before, and we will end up with the same demographically stunted, male dominated workforce we have now.

So, we’ve decided to do something about it. Today, we’re taking a stand for Computer Science.

Laying the ground work for smarter CS Instruction

First, I’m proud to introduce one of the world’s first Elementary Computer Science Standards. Led by our own Head of Curriculum – Brie Gray, the K-12 CS Framework (2016) guided the writing and development process before the standards went through multiple reviews by Kodable’s Curriculum Advisory Board. The board consisted of a team of educators from Stanford, Teach for America, and school districts around the country, we believe this is the first step to teaching computer science the right way.

Following the S.M.A.R.T methodology (Specific, Measurable, Achievable, Realistic, Time-based), these computer science standards provide a roadmap for educators to teach CS with measurable student outcomes. It is important to note that these standards are not specific to Kodable. While over the next few weeks, we will be revamping our entire product around these standards, educators are free to use any coding program they would like with these standards. The most important thing is always the student, and if Kodable does not fit with a certain school, we don’t want the student to be left out.

While there are some drafts currently available for K-12 that include a limited K-5 set of computer science standards, they are more of an outline or framework than comprehensive standards. The Elementary Computer Science Standards are by far the most comprehensive available, including a wide variety of concepts not addressed by others such as social emotional learning and communication skills. Our standards focus on developing the whole student, and really try to bring out all of the benefits that come with learning computer science, not just their ‘coding ability’.

Get-the-computer-science-standards
Download your copy of the computer science standards

Focus on developing the whole student

Second, The Kodable K-5 Computer Science standards were written to provide teachers with a roadmap for developing the whole student through a computer science education. The strands within the standards are comprehensive and include elements beyond programming concepts (e.g., social emotional learning, programming impact, ESL). Our goal is to reach ALL students and see computer science become part of a complete elementary education.

It has always been our mission to make programming and computer science accessible to all students and educators. Since the beginning of Kodable, we have consistently heard how teaching students to code has brought about growth in many other areas. Students who normally didn’t engage with their peers began to open up and lead the class in programming. ESL students began to overcome tough language barriers through strengthened perseverance. Students struggling in math or testing improved their performance by practicing their problem solving skills in programming.

The Computer Science Standards focus on more than just programming and critical thinking because CS teaches more than just that. Computer science expands to all areas of learning, so you can now definitively say to your administrators that integrating computer science will help your students beyond just problem solving. Now you can tech with confidence knowing their growth can be measured, connected back to programming, and most importantly, leave a lasting impact.

What does this mean for Kodable?

Lastly, we will be requiring all teachers to create a Kodable account and set up their classes to use Kodable. It will also no longer be possible to use Kodable as just a game. Students simply will not achieve mastery in any standard without at least one off-screen lesson being taught, whether they are using Kodable or any other tool, and we feel our product should reflect that reality.

This decision was not made lightly. We understand how strapped for time teachers already are in the classroom, and will be making a number of improvements, such as QR code and picture based login, to preserve teachers’ already limited time. You can now be wholly focused on actual instruction, and not class setup or iPad management.

We know this will not work for everyone, and luckily there are plenty of other quick-start coding products that do not wish to adopt this type of structured learning environment; some programming education is always better than none! But again, the student is always the top priority for every educator, including ourselves, and we feel like this is the best way to create a structured environment that promotes actual student mastery of concepts, not just a fun game to play.

This is an exciting time for computer science, and for Kodable! Every educator we have given a ‘sneak peek’ at our computer science standards has been incredibly excited, and we know you will love them too. As eager as we are to get them to you, we are even more eager to hear your feedback! You can always reach us at our website – www.kodable.com, or by emailing support at support@kodable.com if you have any questions or concerns. We’re always here to help!

Build Classroom Community with Coding Team Builders!

Back to school means old faces, new faces, and getting to know each other in a new classroom community. We know fostering collaboration and building an emotionally supportive environment positively impacts academic achievement and developing a community from the start is key.

Team building activities that promote critical thinking and collaborative problem-solving are a great way to kick off the year with your students and develop a strong sense of community that works together from day one. Traditional team builders like “The Human Knot” are great, but what if we could use coding and computer science concepts to get to know each other?

Here’s how:

Variables

In programming, variables store information in a program. The information is referred to as values, and can be either text or numbers. You can think of a variable like a container with a label that stores related items inside.

Strings

A string is a variable that stores values that are groups of characters, like a word or phrase. A great example of a string variable is a name: a name is a value that is used to identify a person.

Name Games: Back to school name games that help students get to know each other are a great opportunity to introduce string variables. Explain to students that they represent a variable and their name is a string that is a value associated with them. There are tons of name games out there, get creative and have fun!

A simple and silly name game that can get students thinking about string variables can be as basic as students going around a circle and choosing a word that goes with their name (their favorite food, sport, a rhyme, or a letter that matches the first letter in their name). For example, “Ashley Apples” or “Mike Bike”. Everyone says their own name and the names that came before to help get to know each other!

Integers

Integers are values that are written and stored as numbers.  Integers are variables that store values just like strings, only the values are numbers and not words.

Paper Bag Share:  Each student has a paper bag and labels the bag with a word or topic that describes something about them. The topic must relate to the student and needs to be something expressed in numbers. Get students thinking about things they have that will tell a little bit about them.

An example would be labeling the bag “Siblings” or “Pets”.  Students would write on a piece of paper how many siblings or pets they have (0, 2, 4, etc.) and place the value inside the bag. You can have students choose any topic  to represent a variable and have them place a related value inside.

Arrays

Arrays are ordered lists of variables that include both strings and integers. Arrays keep related values organized and in a specific order.

Time Capsule: As a class, make a time capsule for the year that represents an array.

  • Name the array based on the grade or class name, like “4th Grade.”
  • Students write down their expectations and goals for each month of the school year on separate pieces of paper.
  • Students place each of the 10 “values” inside the time capsule in order from September to June, keeping the values organized chronologically in the time capsule.

Object-Oriented Programming: Objects, Classes, and Properties

Objects and Classes

Classes hold information about an object and allow us to create new, individual objects based on these details. A helpful way to explain classes and objects to students is to think of basic classification: grouping objects based on their similarities and differences.

Activities that allow students to explore their similarities and differences will help students understand classes and objects in programming while getting to know each other.

Properties

Properties are special types of variables that are attached to an object and describe it.

Students can think about themselves as an object and things that they have as properties. Any team building activities that allow students to describe themselves and each other will help students understand properties and objects in programming.

We’ve gone ahead and created a sample activity for you that will help students in grades 3-5 learn about variables and properties while engaging in back to school team building.  Get it here:

DL Team Builders Here

Like what you see or have ideas? Leave it in the comments below!

Code your Back to School Procedures!

An elementary classroom without clear procedures for daily routines means chaos. As you head back to school and get your classroom operating like a well-oiled machine, consider including some coding concepts to make it fun and frontload computer science lessons you’ll teach later in the year!

How do classroom procedures relate to coding concepts?

Every transition throughout the day requires clear, rehearsed routines that keep everyone safe and in an efficient learning environment. Procedures help us avoid wasting precious time, keep students on track, and allow for 30+ humans to function together in one room- a miraculous feat when you think about it.

Procedures require order, rules, and often silly names that direct students to perform a certain set of actions (think “Criss-Cross Applesauce,” “Put a bubble in,” etc.). These are all elements of programming concepts used in programs to direct a computer to carry out tasks- making them perfect examples of how we can relate programming to real life for our students.

Sequence

We know that in programming, sequence is the order that commands are executed by a computer which allows us to carry out tasks that have multiple steps. In programming, we direct the computer to perform multiple steps in the correct order and it allows us to carry out a task.

In the classroom, students have to perform multi-step tasks as well, such as washing their hands, transitioning to lunch, or coming in from recess. Think about some routines that are specific to your classroom and how they are a sequence of steps put together: this is just like how a computer carries out tasks and will help students understand this process for computers.

Conditions

In programming, conditions are basic “if, then” logic statements that modify how code is executed; making them a key part of the decision-making process for computers. Conditional statements are basic cause and effect: “If this, then that.”

In the classroom, students experience conditional statements daily as they follow classroom rules and guidelines (or break them!).  Using conditional statements will help students think about and set classroom norms together, and make conditional statements easier to understand in programming down the road. Integrating conditional statements into classroom procedures will help students understand how stories can alter and the role programmers play in changing a computer program’s path.

Functions

Criss Cross Apple Sauce Function

 

In programming, a function is a named sequence of steps that can be reused and easily called on over and over again.

 

Classroom management strategies are a great example of a function: teaching students a sequence of steps and giving it a silly name that you can say without having to direct students through each step in the process, every time.

In the classroom, functions can be a lifesaver! Getting students to do a series of tasks in one motion by calling out a  name can keep things in order and on task; which is what we all want for a productive learning environment.

We’ve taken the time to make k-2 example mini-lessons that you can easily tailor to your own classroom procedures:

Download Mini Lessons Here

To help yourself understand the programming concepts and how they can be used with your back to school procedures, watch our videos and share your ideas in the comments below!

Social Emotional Learning via Digital Citizenship Lessons

The most important lessons we learn in life center around social-emotional learning and becoming safe, responsible, and respectful adults. As 21st century citizens and learners, it has become essential for schools to teach social skills that will keep students safe online and allow them to thrive as learners using digital tools.

Before taking to the internet, iPad, or any educational app, create a structure in your classroom that will prepare students for the online learning world. Here are some quick tips to set the digital tone and some of our favorite resources for teaching digital citizenship:

Teach a Device-Free Lesson First

Not only will it double as a team-builder and improve your classroom culture, but teaching a lesson on digital citizenship without being online has huge benefits when students eventually get online. Just as you would define clear routines and structure in your classroom, the online classroom needs the same level of attention. Priming your students for what’s to come will prepare and excite them when it’s time to try out that new program, app, or online lesson.

DigCitLP

Have Students Make Real Life Connections

Engage with your students in a class discussion around safety in real life. Get students to think about how they are safe, responsible, and respectful when face to face with others. This will help them understand the internet as a giant collection of very real people and things (including consequences); even though they can’t always see what’s on the other side.

Take Advantage of Resources

Although the need to explicitly teach digital citizenship is recent, there are already resources just a few clicks away. Some awesome teachers have shared their digital citizenship lessons on personal blogs, and there are even companies working to create material that saves you the planning time. Check out one of our favorites, Common Sense Media, which will give you access to all of the materials you and your students need to stay safe online- for free!

The internet is an amazing resource, and we’re seeing students rise to new levels with access to so many programs and opportunities. As educators, it’s our job to teach our students how to live in the digital world and make sure the internet continues to be a place they thrive.

Have ideas or opinions on digital citizenship? Leave it in the comment section below!

Metacognition and Computer Science

We’ve all been there. I was standing in front of my 30 fourth graders, modeling a multi-step equation involving fractions and decimals. Talking through the problem, I didn’t even catch myself misplacing my decimal point in the solution. “A kid mistake,” as one of my students pointed out.

A “kid mistake” or a learning opportunity? Talk about a teachable moment! Thinking about our thought process, formally known as metacognition, is not just a math, reading, or computer science skill- it’s a life skill.

How does computer science activate metacognition?

  • Thinking critically. In computer science, there are so many ways to solve problems, execute an idea, or complete a task. Like math, multiple paths can get us to the same answer and everyone may solve the same problem a little differently. Exercising metacognition allows students to think about different ways to solve a problem and choose the best possible solution.
  • Problem-solving mindset. Overcoming failure leads to success in computer science. You fail and you fail often. Having a problem-solving mindset allows you to get to the best path forward and overcome failures.
  • Debugging:  “Did I make a mistake?” “What was my plan?” “Where is the mistake and how did it happen?” “What can I do next?”
  • Comprehension: Think reading comprehension! Teaching computer science concepts off-screen allows students to think about what concepts and skills are being applied as they work in coding apps or games. Always encourage students to think about what skills to use, what potential next moves could be, and to self-monitor their process as they go; just as they would when reading.

Four ways to encourage Metacognition through Computer Science

  1. Ask questions. Whether you know anything about computer science or not (you’ll learn a lot by doing this), you can still ask your students questions while they’re on coding apps and prompt them to think about their thought process. This isn’t any different from how you would develop reading comprehension, by the way!
  • “What problem are you trying to solve?”
  • “What are your options?”
  • “How will you decide what the best solution is?”
  • “What is your next move?”
  • “How will you fix your mistakes?”
  • “What are you making?” “How will you do that?”

Follow-up Questions:

  • “Tell more more about that.”
  • “How is your idea different than your peers’?”
  • “How did you decide that was the best option?”
  • “Have you considered ___?”
  1. Organize and facilitate classroom discussions. Giving students a space to talk about their thinking allows them to think deeper about their thought process and put it into words- taking metacognition a step farther. You don’t have to be a computer science expert to set the stage for students to talk about their ideas and strategies. Head here for some great classroom discussion activities that require minimum planning and are easily transferable to STEM.
  2. Give students choice and ownership (across content areas). When students are invested and responsible for what they’re doing, they are more likely to be intentional about their work. Mindlessly breezing through coding apps or programs is far less of an issue when students are curious and want to engage with their work- commence debugging!
  3. Model it! Talk through your thought processes, what you’re thinking as you’re doing a read aloud, and capitalize on your own mistakes. Find (or make) opportunities where you can audibly go back through your thought process and correct mistakes. This will benefit students in a few ways: they’ll see a real life example of metacognition, they’ll remember it and try it on their own, and they’ll realize everyone makes mistakes and can correct or catch them by thinking about their thought process as they go.

Opportunities are endless to model thinking strategies for students across academic standards and real-life situations. Not being afraid to take a leap with computer science and trusting your own strategies for developing students in other areas is key, and that is certainly something worth thinking about.