Posted by Eric Foster on Sep 01, 2021
Three students, each facing a computer
In the summer of 2019, I found an amazing opportunity to be a Computer Science teacher at George Westinghouse High School. There’s so much I wish I knew when I started. I’ve tried to capture those learnings in this post.

Full Story

There’s no doubt teaching computer science has been my most fulfilling job. I came into teaching after working as a technical project manager for over 10 years. After years of witnessing a lack of representation in the industry, I wanted to become part of the pipeline encouraging and preparing young people of color for careers in tech. In the summer of 2019, I found an amazing opportunity to be a Computer Science teacher at George Westinghouse High School. There’s so much I wish I knew when I started. I’ve tried to capture those learnings in this post.

Envision Your Program, Align Stakeholders, and Standards

If you are tasked with developing your CS program (sorry!), start work with a vision. As a Career and Technical Education (CTE) teacher, I am preparing students for post-secondary success at a college or company. To me, that means creating empowered problem solvers that are resourceful and resilient. That means finding professional and skill-building experiences for students and incentivizing them to take advantage.
Your vision may evolve but once you have something in place, present it to your school administration and finalize it with their input. Alignment with stakeholders and standards ensures your program has direction and support while it’s being implemented. Just understand, this doesn’t guarantee success. Your program is a long-term investment that may need to be tweaked or completely scrapped.

Curate Enriching Activities and Professional Opportunities

Students attending CTE schools are required to complete 54 hours of work-based learning activities such as job shadowing, mentorships, internships, and more. This requires developing external partnerships that offer professional development for teachers and professional experiences for students. This summer, I’m facilitating a workplace challenge with CodeHS. Students participating in the challenge are tasked with developing a solution to a challenge CodeHS is facing. As a result, students gain 21st Century Skills, an artifact for their portfolio, and compensation for their participation.
See how Shaina Glass develops external partnerships (link).
Students aspire to what they’re exposed to. They will be drawn to retail and fast-food jobs because these jobs are familiar and perceived as easy. My challenge is convincing them a WBL activity is always going to be more beneficial while also introducing positive role models to encourage them. Last school year I reached out to people of color in my network and recruited Adrian Grant, a tech investor and adviser, and Vikas Nair, formerly a software developer for Apple, to drop in my classes as guest speakers.

Design Curricula and Assemble Advisory Committee

As a new CS teacher, you may inherit a curriculum. It should still be vetted for industry relevance and standards alignment – especially if you teach high school students. We started from Scratch (pun intended) for 10th-grade students. For 11th and 12th, we started with but found the teacher tools and courses were lacking and upgraded to CodeHS. With their extensive catalog of courses, comprehensive lessons, certifications, and responsive support, CodeHS has powered our program.
See other coding courses below:
Your program should have advisers from the industry to ensure you’re producing students with relevant skills. We meet with our advisory team once or twice a year but I would recommend meeting once a month. In these meetings, teachers get a better sense of what skills are in demand and can use this input to shape their programs. You can also use these meetings to discuss and design professional experiences for students.

CS Fundamentals and Instruction

I was fortunate to have professional experience as a CS teacher but you may be transitioning from another subject. If your school has the budget, find a coding bootcamp you can take over the summer. If you want to focus on a language, JavaScript, Python, and Java are common in the industry and CS education but the concepts are more important so no need to fixate on one language. If you’re looking for free resources, check out or coding tutorial series on YouTube. You could also sharpen your skills by attending a hackathon.
I believe learning the fundamental concepts of computer science in one language will translate over to learning another language. If students grasp variables, functions, loops, conditionals, data structures, algorithms, and debugging, they can choose what language to pursue next without a steep learning curve.
Every week find time to pre-prep prep! Your first and second years may be the most difficult for a number of reasons. You may need to adjust to managing a class, the paperwork and expectations presented by your school’s administration, and the many other responsibilities of a teacher. The best thing you can do is set yourself up for success by planning your lessons a week or more in advance. Your curriculum may be complete but you will need to internalize the pacing, delivery methods, lessons, and assessments.
Rehearse live coding activities! Especially if you are new to the subject. This gives you an opportunity to make mistakes, learn from them, and anticipate questions students will have. If you are learning CS, you’ll rapidly learn faster by making these mistakes and discovering answers so you won’t be embarrassed when a student asks you a question you can’t answer. You will continue to fail at live coding exercises but eventually, the pangs will subside and you’ll move on.
When introducing a new concept, always explain WHY a concept is important and WHEN to use it. It’s not enough to understand the syntax but students should understand why loops are useful and when to use them.
Find offline activities that challenge students to think critically. The marshmallow challenge has always been a favorite with my classes.
It’s ok to not know everything but say this upfront. Be humble and set expectations early.  As a teacher, you are responsible for guiding the student’s thinking. You are not an infinite source of CS knowledge.
Lastly, bring gum! After a long day of talking your breath is going to be bad!
Now in my 3rd year, I still have much to learn but this is my advice for new computer science teachers looking to make a difference in the space.