Breaking Down Problem-Solving into Simple Steps
by Kelvin Chung
When I first joined the Computational Thinking Equity Project (CTEP) program as a mentor, I hadn’t heard of the term ‘computational thinking’ before. Even as a Mathematics major, I was only implicitly aware of this methodology through which I approached mathematical or logical problems. Through CTEP’s workshops and community-based learning sessions, I was finally able to put a name to this methodology and quickly learned to conceptualize the steps that I took when solving problems. The four intertwined pillars of computational thinking—problem decomposition, pattern recognition, pattern abstraction, and algorithmic design—are steps that I learned to take when approaching computational problems. In the math classes I took throughout K-12, I was unknowingly developing a method of thinking that allowed me to solve math problems.
CTEP helped me to realize that educators can accelerate this painstaking process of development for students by framing questions to students in a way that will encourage them to think computationally:
“What are some smaller portions of this problem that you can solve first that will help you approach the bigger solution?”
“What steps have you taken in a similar problem that you can apply for this problem?”
This approach is so effective because it guides the student through the most difficult part of problem solving by framing the given information as something that they’ve seen before. If a student is unable to come up with an answer to a guiding question, the teacher can ask another question to help break down the problem into even more recognizable and manageable parts until the solution finally clicks for the student. This helps students to develop confidence in approaching even the most complex of problems.
As a mentor for CTEP, I assisted a South Los Angeles high school in a Game Design class. Students in this class used basic C* and Unity Engine—a game design suite commonly used in industry—to create simple computer games such as the “endless runner,” in which the player has to jump over obstacles while running. Computational thinking is embedded into the core of programming. For example, in order to create this game, students first had to code portions of the game, such as the jumping and running actions and obstacle collision detection. I guided students to recognize patterns in the code and develop algorithms to implement certain features of the game. Often, students just needed a reminder that they could apply a coding concept they had previously learned to the problem that they were attempting to solve. As I continued to work with the students, they became more comfortable with tackling a bug in the code by themselves before asking for help.
Near-peer mentorship through CTEP opened my eyes to how impactful STEM education can be when approached methodically—and more specifically, by encouraging the pillars of computational thinking. I learned from the students creative ways to break down coding tasks, which reinforced my own ability to think computationally. I was pleasantly surprised that teaching computer science had transformed how I personally approach programming and made me a better programmer. It taught me how to simplify code and explain it more effectively, to continuously learn like a student and apply what I’ve learned to solve the next problem.
My time with the students rekindled my passion for becoming an educator in the future. Hearing these students express enthusiasm about pursuing computer science as a result of these classes reminded me how important education really is. Not only did this class equip students with the critical thinking ability to approach any future problems, but it also helped them discover their passions. These students—many of which appeared as if they hated being in school—seemed eager to come into this class, work on their laptop, and continue developing their projects. It was inspiring to see these students finding joy in creating simple games—creations that they could call their own. I hope that my time with these students has left a lasting impression on their desire to create, like the impression they have left on me.
Kelvin Chung is a UCLA undergraduate student majoring in Mathematics/Economics and a STEM mentor with CTS’s Computational Thinking Equity Project (CTEP). He is interested in exploring the ties between mathematics and computer science and hopes to pursue a career in software engineering in the future. Additionally, Kelvin also has a passion for teaching, which he found through tutoring elementary and middle school students during high school. Following his career in software development, Kelvin intends to return to high school as a Math and Computer Science teacher.