I teach a unit in cryptography in my 6th grade computer science course. It’s not an obvious addition to my curriculum, and it’s not one I’ve seen listed in many other CS classes at this level. Here’s why I think it’s important.
Cryptography requires students to practice complex problem solving. Students try different approaches until they find one that works. What works with one problem might not work for another. This is the opposite from problems students usually receive, in which they apply the same methods they’ve learned. It also requires students to research, and to stay with a problem even when it’s frustrating. These are skills that are necessary for higher math and for computer science, but they are very difficult to get to in a classroom. Cryptography presents a way to practice these skills in a game-like format.
Cryptography also encourages students to think about privacy and security in very practical ways. It can lead to really great discussions, particularly since issues around cryptography are very much in the news.
Cryptography allows me to sneak in some other topics the kids may not have been exposed to. Prime numbers, probability, and frequency analysis are easy to talk about in this context. There are also numerous examples of failed cryptography that allow me to delve into history and technology.
The big reason for teaching cryptography, though, is that I really enjoy the topic myself. This gives me the energy to make a lot of practical challenges for class. The kids pick up on my enthusiasm, and really focus on the class. And they love the challenges.
Here’s my latest challenge: