Things I Learned Teaching High School Computer Science


The bell rang. Sleepy teenagers started filing into the classroom. I took a deep breath. I was back in high school.

Except this time I was the teacher.


Becoming “Mr. Iyengar”

In 2009, a Microsoft engineer named Kevin Wang started working with a Seattle high school to create a computer science class. He taught in the mornings before heading to work.

The class was a hit and word spread. Other schools wanted CS programs of their own. Kevin started recruiting more of his co-workers to help. He convinced Microsoft to give him funding to run a teaching program full-time.

TEALS was born.

The goal of TEALS is to bring CS education to every high school. To do this, the program recruits a group of engineers to develop and teach classes at a local school. At the same time, the team helps train teachers at the school, creating a CS program that is self-sufficient.

Last year, TEALS was in 70 schools, including Balboa High School in San Francisco, where I taught Intro to Computer Science. This year, the program will be in over twice as many schools.

I spent the summer in a training program along with nearly 300 other volunteers. We got a crash course in teaching from education experts and started developing lesson plans. Twelve weeks later, it was showtime.


The first day was both exciting and nerve wracking. We did a quick survey. Most of the kids had no previous exposure to programming. A few did not have computers at home. We started the class by talking about why CS was important and how “software is eating the world”.

By the end of the semester, each student presented a final project with a working game that they had designed. And they could all pronounce my last name. They had come a long way.

I had come a long way too. Here are some things I learned.

1. Before you start: HALT

One of my favorite lessons from teaching training was the acronym HALT. Is a student having trouble? First check if they’re Hungry, Anxious, Lonely or Tired.

I’m not sure why school starts as early as it does. But a first period class meant dealing with the “T” every single day. It’s well known that yawning is contagious, but it turns out that excitement can be even more contagious.

Mr. Lee, the Balboa High teacher we were working with, had a natural knack for bringing positive energy into the classroom. He showed up early every day, greeted the kids loudly and cracked jokes before class started. We let kids eat breakfast in class, played music during lab time, and sometimes passed out candy.

Mr. Lee’s energy helped me be more energetic. In turn, it helped us wake the kids up. I’m sure the snacks didn’t hurt either.

HALT is just as applicable to adults. Boring meetings can become interesting meetings with a little positivity or humor. And misunderstandings happen when people aren’t in their best mental state. Turns out those Snicker’s commercials were right: “you’re not you when you’re hungry”.

2. Basic CS education has major benefits

Some kids came away from the class eager to learn more. Some also eager to explore a career in engineering. I learned that the class was just as valuable for those that didn’t.

We interleaved a series of “culture days” into the lesson plan. We talked about privacy, cloud computing, how startups work, and more. The goal was to give students a better understanding of the impact of technology and teach broadly applicable skills at the same time.

The kids liked hearing about what tech companies did and how to get jobs at one. Learning more about these companies revealed career options that students may never have considered. Especially since technology companies employ people with a variety of skills — not just engineering.

Beyond understanding software development, CS improves general problem solving skills and logical thinking. Concepts like abstraction help you think about complex problems, regardless of the field.

Mario’s got hops.

CS also provides real-world grounding for math and science. One of the first assignments we gave was to make a simple Mario game. When students wanted to make Mario jump more smoothly, we reminded them of coordinate planes and parabolic equations.

I could see the lightbulbs going off with the realization that geometry and physics class were paying off.

3. Teaching is hard. Fun, but hard.

Teaching is hard because you have to be “on” every single day. You can’t be late. You may be sleepy, but you can’t act tired. You have to grade assignments and come up with quizzes.

Time management is also important. Having 35 students, meant I could spend a little over one minute with each one during a 45 minute lab. One on one attention is scarce but valuable.

The only way to teach well is to prepare for every single day.

My favorite part of teaching was seeing progress happen right before my eyes. It reminded me of the early stages of starting a company, where we were making major leaps every single week. I also enjoyed hearing about the cool new games, music and celebrities from my students.

It’s scary to think that my preparation or time management could impact how much my class learned. It’s even scarier to realize that some kids get no exposure to CS at all.

That’s what makes the TEALS model so powerful. By pairing engineers with experienced educators, schools get lasting CS programs. That way everyone gets a chance.


If you’re interested in teaching with TEALS, take a look at tealsk12.org or feel free to reach out to me: @iyengar.