So you’re about to enter the magical world of teaching computer science, combining the creativity of lesson planning with the satisfying problem-solving of coding. From curriculum to classroom culture, there’s a lot to think about as you dive into teaching a subject for the first time.
1. Don’t start from scratch.
There are many pre-made curricula available for computer science classes, and a number of them are free! You can use the curriculum outline of a pre-made course to help design the scope and sequence of your own class and cherry-pick the provided activities that you like.
If you have more than two new preps, activities in the pre-made classes can also be a fallback when life gets crazy (as it inevitably will for first-year teachers).
Some great free resources to start looking at include the Scratch Curriculum Guide (K-8), Code.org (K–12), and CodeHS (6–12).
For AP classes, using a standard curriculum can also help ensure that you cover all the material at the appropriate speed. Although options for AP Computer Science A are more limited and expensive, there are many free options for AP Computer Science Principles, such as the Beauty & Joy of Computing and Mobile CSP for less experienced students and Harvard’s CS50 for more experienced students.
Over time, you might design entire classes from scratch. But when you’re just starting out, it’s more efficient to stand on the shoulders of giants and build on what’s been done before. And you can still personalize the curriculum and make it your own!
2. Stay at least a step ahead of your students.
Regardless of the curriculum you use, make sure you do it yourself to understand what your students will experience! Completing the exercises and labs will help you better assist students and anticipate mistakes.
You may also have to learn new languages or computer programs. Even if you have a degree in Computer Science, it may not have covered Scratch, App Inventor, or p5.js! It’s best to familiarize yourself with new technology as much as possible so that you are better able to answer student questions.
3. Create a classroom culture of inquiry and mistake-making.
It’s great if you can answer student questions, but you’re not always going to have the answer. From the first day of school, share with students the reality that computer science is a vast field where no one knows everything. Developing software is not about having the answers, but about cultivating the ability to figure things out using your resources: your classmates, the internet, and your teacher.
Encourage students to follow a personal empowerment protocol to figure things out when they have a question. Similar to “ask three, then me,” this protocol encourages students to…
- Ask a peer
- Google it
- Ask the teacher
This protocol both helps students become independent problem-solvers, and also helps ensure the teacher isn’t bombarded with questions.
Finally, normalize errors and mistake-making. Assure students that errors are part of a programmer’s daily life, and model dealing with errors yourself during code-alongs. Consider starting an “Error Tally” in your classroom where you tally all the errors that occur and celebrate them as a representation of all the things the class has learned today.
4. Establish clear expectations for computer use.
You don’t want students playing Fortnite when they’re supposed to be working through programming exercises. In your classroom management plan, include clear expectations for computer use, including the fact that computers should only be used for class activities.
Depending on the age group of the students, consider establishing routines for computer use as well. Will students be allowed to open their computers before class students, or will they need to wait for permission from you?
Students also generally will have difficulty listening to you if their computers are open, absorbing their attention. Have them put their computers at 45 degrees (halfway closed) or even fully closed whenever you need their attention. Model what this behavior looks like: should they be slouched in their chair to still see their tilted screen, fingers still moving on the keyboard? (No.) Tell them they can close their computers fully if they anticipate that the computer will still be a distraction at 45 degrees.
These are all expectations and routines that you can establish and practice in the first week of school!
5. Establish clear expectations for academic honesty.
So much code is available on the internet, from Scratch programs to AP Java solutions. Level with your students: although professional programmers use the internet as a resource, your students are in an academic setting where they are expected to write their own code and do their own work in order to learn.
Harvard’s CS50 course has a great set of academic honesty guidelines that can be adapted to a high school setting. Consider putting some version of these guidelines in your syllabus:
Academic Honesty Guidelines
- Be reasonable: do not copy solutions off the internet.
- You may discuss the problems with peers.
- When asking for help, you may show a peer your code, use and cite online resources, and ask the teacher for help.
- When giving help, you may not show a peer your code. You may critique a peer’s code and ask guiding questions to help a peer see the solution.
Discuss the guidelines on day one, and even give the students a few hypothetical situations that they can judge as violations of academic honesty or not!
6. Use pair programming.
Which is more desirable: an uncomfortably silent classroom, except for the sound of typing, as students silently struggle to solve complex problems? Or a classroom humming with on-topic conversation and debate between pairs of students?
Computers can isolate students, but they don’t have to if you use pair programming and have students complete certain labs and problems in pairs!
By working together, students help solidify each other’s programming knowledge and keep each other on task. They enjoy the class more and become less intimidated by computer science.
Pair programming is a great intermediate step between learning a new concept and solving a problem individually. Make it a routine in your class, and then give students a chance to demonstrate mastery on their own.
If you’re interested in some pair programming techniques, check out our last blog post on promoting collaboration in a computer science classroom.
7. Have a lot of back-up activities.
It’s hard to entirely blame students for playing Fortnite if they’ve done all the assignments and you have nothing else for them to do. So make sure you’ve got lots of back-up activities for the early finishers!
Extra challenges in the daily assignments can help differentiate your class and give students an opportunity to build their coding skills. Resources for extra practice, like CodingBat for Java and Python, are another great option for early finishers.
It also helps to have ongoing projects or problem sets that students can work on whenever they finish their daily assignments.
Beyond the curriculum, you can invite students to pursue any track on Codecademy or SoloLearn that interests them, and even reward them with a prize (e.g. programming-related stickers or keychains) if they finish a whole track.
You can also allow them to free create in whatever programming language you are currently using. While some students thrive on this option, others need more structure, so an array of options is helpful.
8. Connect with other computer science teachers.
Chances are you’re the only computer science teacher in your school, making it essential for you to connect with other teachers. You will glean the most wisdom from other, more experienced computer science teachers. So how do you connect with these people?
It’s great to meet people in person, so attend professional development events in your local area. Make a Twitter account if you don’t have one, and stay in touch with educators you meet on there (Twitter is pretty popular among teachers).
Once you’re on Twitter, search out other K-12 CS teachers. Participate in Twitter chats like #ethicalCS and #csk8 to meet other teachers and share knowledge.
If you’re on Facebook, join the Computer Science Educators group and, if you teach APs, the AP Computer Science A Teachers and AP Computer Science Principles Teachers groups.
Here’s the crucial part: ask for advice! Research shows that asking for advice makes you look more competent, so there’s nothing to be afraid of. The computer science teacher community is generous, and you will likely receive an outpouring of responses.
9. Have a growth mindset.
You get better at teaching through experience, which means that when you first start teaching a subject, you’re probably not amazing at it… yet. But will grow and become a fabulous computer science teacher through experience and professional development!
Sometimes your intricately-planned lessons will flop. Whenever this happens, note it and write down the changes you’ll make next time you teach it. If you have time, you can even revamp your lesson plan and materials right then and there! See, already you’re becoming a better teacher.
10. Have a non-computing hobby.
Teaching is pretty all-consuming, and there’s always more to learn about computer science. But don’t let teaching computer science take over your life, or you’ll burn out.
Establish some ground rules to maintain some kind of work/life balance. A few good starter ones are not working after 8pm on school nights and picking one weekend day when you won’t do any school work (or when you’ll just work in the morning).
To help yourself stay away from work, have activities and people in your life totally unrelated to teaching or computers. Sign up for a workout class, learn Spanish, get really into cooking, go to a beach volleyball meetup… anything you enjoy that will help you recharge after teaching!
The first year teaching any subject is the hardest. But once you get to your second year, you’ll have so much more knowledge about how to teach computer science, and so many more lessons prepared that you’ll be able to reuse and build on!
This article is written by Kelly Lougheed, who is a Software developer & educator and can be followed on Medium or here: https://blog.upperlinecode.com/@kellylougheed