How Do We Make Computer Science Fun?
Tags: High School, Teaching Computer Science, Computer Science, Middle School, Teaching

This is the first time I have written anything on the internet so bear with me while I make some rookie mistakes and editorial errors. My name is Shilpa, I am a 20 year old Computer Science student, and the only thing I do more than programming, is teaching. I have been teaching my peers and juniors for as long as I can remember. Teaching was something that came naturally to me — it may be because both my parents are educators. Anyway, growing up I usually taught “difficult” subjects like Science and Mathematics to my friends because I always found an easier way to understand the material. However, I realized I needed to make a huge change in my teaching style when I started teaching Computer Science.

The weird thing about learning Computer Science is that everybody tries to make it look like fun. If you try to learn a Math concept like parabolas, or trigonometry, you’d notice that it starts with the basics, then the formulas, maybe proofs, and finally the implementation. However, when I first started learning CS, it was much different. First, I was caught off-guard with a question: “What is Computer Science?”, followed by a “If you think Computer Science has to do with Computers, YOU ARE WRONG!”. I mean, if you have ever taken an Intro to CS course before, you probably have experienced this. But why? Why do CS teachers try to make it seem more intriguing than any other subject? And why does every new instructor(Including me) blindly follow these tactics?

Well, to begin with, I liked the drama. I liked introducing concepts to students that they wouldn’t understand right away. Take the concept of Computer Science for example. When asked to define Computer Science, it is more than often that you see students answer with “The study of computers”, which in our book is really wrong. However, we as CS teachers like to add to the drama and say “Well, it is not what you think it is!”. For me personally, the drama was important. It is important to me that my students care about CS as much as I do. When I say problem solving makes me as happy as Indian food does, I am not exaggerating. And I think every educator deep down wishes that their students would fall in love with the subject like they did.

Although, I love the drama and seeing the curiosity in my students, one thing that I don’t exactly love is making CS look more fun than it is. I guess just to compare, we can talk about Java and Snap!, two very different programming languages. I know that since Java is my first language, I’m going to be pretty biased, but god do I hate teaching Snap!. Now don’t get me wrong, I absolutely LOVE teaching CS, but what I don’t like is that we are trying to deceive our students by adding flashy colors and playful characters to kind of simulate a programming environment while also keeping it fun.

Snap! is a block-based programming language, used largely to learn and teach the concepts of Computer Science. It is honestly pretty easy to learn because it uses very basic vocabulary, has drag and drop commands, and also has animations and visual representation of the output to make it look fun. If you are into visual creativity, and hate typing, Snap! is for you(jk lol). Although it seems super exciting and fun to play with, I didn’t exactly enjoy the idea of teaching this to high-school students.

Making education exciting is one of my primarily goals in life. However, with my years of experience, I have also understood that the term “exciting” has different meanings to people of different ages and skill level. If I asked a co-worker to help me debug something and they started drawing out cartoon characters to “make it easier to understand”, I would be extremely mad. Same way, you can’t exactly make something more exciting, by making it easier or by adding colors and graphics to it. High-school students are pretty smart. I mean, I am sure they can read a book with no pictures, the same way that they can write an essay without using crayons. Similarly, I really don’t feel like colors and drag and drop really helps them understand CS.

When using something as simple as Snap!, it is extremely easy to find the easy way out. There’s just so many things that you can adjust in Snap! that most times, regardless of how buggy or clean your algorithm is, there is almost no repercussions. And sure, if we want our students to have fun and create animations, Snap! is great. But, one thing to think about is what happens when they do decide to learn a more low level language like Java? Will this Intro to CS course have helped them prepare for it?

Honestly? No. The problem is that we as CS educators get so lost with making CS fun and intriguing, that we forget to teach the basics. Snap! is one of those languages that jump straight into the implementation, before even talking about the process. Okay maybe I should stop dragging Snap!, so let’s talk about teaching Java instead. So when teaching Java, what happens after we finish our talk about CS not being just about computers? WE GO ON A COMPUTER AND PRINT “HELLO WORLD”!. Sorry for yelling but god, the irony. We print “Hello World!” because now our students are bored and they want to see how to talk to the computer. But is that the only solution? I believe there’s a better way to get students interested in CS — by making CS more relatable. And what’s one thing that we have in common with a computer?

Problems! When I first learned CS, I learned the definition of the term algorithm and just moved on to the next chapter. Little did I know that I needed to learn more about algorithms than I did about Hello World. The betrayal am I right? Anyway, why did I wait until the Sophomore year of college to learn about Data Structures and algorithms? Why is it that barely any 3rd or 4th year CS student I’ve met, has learned anything about problem-solving at school? Because NOBODY CARES. Everybody wants to show you how to print, how to make a for loop, how to make a nested loop, but nobody wants to talk about WHY? Why are we doing this? When is it helpful?

I think, once we start teaching students to look at the world as a box full of problems that we need to solve, we can teach CS. In my opinion, that’s what CS is about, right? If you can tell students that CS isn’t about computers, then tell them what it’s really about. Tell them what it means to think like a problem-solver. We don’t need to try to make CS interesting to students because it already is interesting. It is extremely relatable, and it challenges the way you think. And never have I ever met a student that genuinely wanted to major in CS, while not caring about problem-solving, because they go hand in hand. It is up to us as educators to bridge the gap between the student’s problem-solving mind, and the problem that is the world.