The ELI5 or Explain Like I’m Five concept is a bit overused at this point, but it’s a fun exercise for yourself to see how well you can distill a concept down to “laymen’s” terms. Today, I tried my hand at that by exploring the concept of computer programming. Wish me luck!
Table of Contents
What Is Computer Programming?
Most of the time when I’m writing an article for this site, I’m looking to uncover some deep philosophical programming concept. However, lately, I’ve been interested in approaching some of the core concepts from a new light. For instance, today I’m going to try to look at computer programming from the big picture, as if I was explaining the concept to a much younger version of myself.
For the purposes of this activity, I’m going to specifically describe programming as imperative programming, but this activity could probably be done using other paradigms as well.
After getting over the initial shock of talking to my past self, I think I would start the conversation of programming through some concepts kids already know. For instance, kids should already be familiar with the idea of simple sentences. Therefore, I should be able tie the idea of sentences to computer programming by saying something like, “you know how we can talk to each other back and forth with words? Well, we can have similar conversations with computers.”
Given the world we live in today with the variety of virtual assistants like Alexa and Siri, it might not be that much of a stretch for kids to conceptualize the idea of being able to talk to a computer (and at this point, talking to Alexa or LLMs like ChatGPT might as well be considered a form of programming). With that said, the purpose of having this early conversation would be to allude to the concept of statements.
From there, we can describe different kinds of statements by drawing parallels to real world concepts. For instance, kids should already be familiar with the concept of memory. After all, we’re constantly asking them if they remember things (e.g., can you remember what this is called?). As a result, I might continue to develop the concept of computer programming by telling myself that computers can remember things for you—of course, alluding to the idea of an assignment statement or state more broadly.
After that, there are only a handful of other kinds of statements that we’d have to introduce. For instance, I might introduce the idea of if statements by talking about decision making. In other words, I might tell myself that we can get a computer to do something only on Tuesdays or only when we’re home. An example that might get my past self excited would be to tell the computer to wish me a happy birthday if it’s my birthday.
Finally, I could round out the discussion with myself by introducing loop statements. He should already be familiar with counting, so I might demonstrate how the computer can count for us. Keeping with the birthday example, I might even have the computer wish me a happy birthday five times for my fifth birthday. I know the time traveling is already more confusing than the concept of programming at this point.
By presenting the idea of programming through the lens of a kid, the concept becomes extremely approachable. Of course, there’s always going to be the critique that this approach is far too simplistic, but that’s kind of the point. Conceptually, programming is really just the ability to craft statements (at least for imperative programming). There are tons of deeper skills to develop but that is programming at its core.
Now, the part that might be hard to swallow for the kid is that there are all these little rules to consider when actually working with a computer. So, I probably wouldn’t sell them on being able to do anything amazing right away. That said, this would give them a phenomenal foundation that we could use to build on through discussions around algorithmic thinking, something I stress in my introduction to Python series.
In fact, it’s not a requirement to write any code at all for some time. I think there’s this tendency to want to jump right into the code, but there are just too many skills to learn before any of it makes sense. Sure, it can be done, and I think most of us learned that way. However, I think we would retain a lot more folks if we could help them build up their problem solving confidence before we threw them in the deep end.
Of course, who knows what programming education will look like in ten years with all the tools available. Maybe, we won’t have to worry about this at all.
At any rate, this was another quick one, but I hope you got some value out of it. I’m camping this week, so I’m gong to have to keep it short. Thanks again for reading! Take care.
I'm embracing the virtual world and moving all of my computer science exams online. Here's why!
Amid all the chaos of my daily TODO list, I was able to find order by sorting my tasks by my values. Maybe you'll find some "value" in this tip as well.