Computer Science Education: A Way to Make School More Creative

Karen
6 min readJul 17, 2022
Aerial shot: a table with five open laptops.
Photo by Marvin Meyer via Unsplash.

Hey, it’s been a while (one year, my bad) since I’ve posted! I finished my first year of college, which has been both an insightful and painful journey thus far (ten-week terms fly by in the blink of an eye!). I enjoy university more than high school, and I’ll be documenting why I feel that way here and in some of my future writing.

Thank you to Jen Casa-Todd for inspiring the topic of this post.

Something I’ve talked a lot about in my blog is how restrictive and unforgiving school can be and why I dislike that part of education. Though I’ve provided some minor solutions here and there, a part of me always wondered if there was a large-scale or long-term way to make school more individualized and creative. I think I might’ve found what that something could be: programming.

During the winter quarter of my first year in college, I took an introductory programming course. I learned how to write code in Python, and while I did have a hard time, I have to say I’m thankful I took that class. It’s one of the most meaningful classes I’ve ever taken. Not because it taught me technical skills that are increasingly important, but more so because it allowed me to be creative and reminded me that school should and can be a creative place.

Work Coding GIF by Scaler via GIPHY.

No such thing as one-size-fits-all

Two of my favorite activities in my programming class took place during our Thursday lectures. To be honest, I initially didn’t look forward to our lectures because they were long — 80 minutes — but I soon learned to appreciate how powerful the teaching and learning we did together were.

My professor liked to start class off by presenting two to three different programs that solved the same problem. She asked us to think about each program and choose which one we preferred. Some programs were undoubtedly better than others, and we learned to spot which ones were more efficient and clean through this exercise. Along the way, we also learned what we each like to see in a program — some of us like short programs with nice one-liners while others like programs that are more explicit even if they’re longer.

Side note: I also think this activity made me more confident even though I wasn’t as skilled in Python as some of my classmates because I had to make my own choices and support those decisions with adequate reasoning.

Later during the lecture, we went into breakout rooms to do a second activity: work on programming problems together. My group bounced ideas back and forth and failed to solve problems on the first try plenty of times, but with the help of each other and our lab tutor, we eventually had our answers. Everyone then returned to the main room, and students had the opportunity to present their solutions. We often reviewed multiple solutions for the same problem, and they were almost always different.

What I found to be the most valuable in these two activities was how they showed us that there are countless ways to solve one problem in programming. In the math and chemistry classes I took in high school, I usually learned there were only one to two ways to solve a problem, and the only way to get full credit on exams was to use those exact techniques. My experience with several math and science disciplines hasn’t allowed for much creativity. I’ve never been a “STEM person” precisely for that reason, but I actually enjoyed programming.

Stressed College Life GIF via GIPHY.

Of course, there is a “best” way to solve a problem based on whatever criteria you’re working with such as memory storage, performance, company or client requirements, and there are rules you need to follow depending on the language you’re using. But, at least in the introductory programming courses I took, you have much more room to be creative in how you’re going to complete a project.

I love project-based classes

Because projects are more creative, engaging, and useful than tests.

The full Python programming series at my university is three courses long. I took the first course of the series in the winter and the second course in the spring quarter. The second course is project-based with four projects: the first two are auto-graded and the last two are manually graded. The auto-graded projects didn’t allow for too much flexibility because the code needed to be written a certain way to pass, but I still think the creativity was there because I spent hours trying different solutions until the pieces finally clicked.

The last two projects gave me the most agency. They required me to create a tic tac toe game and — unlike the previous two projects and any of the projects I did in my first programming class — they were very open-ended (which also made them very frustrating). My professor’s instructions for these two projects included a list of required functions to get us started and of what our finished game needed to have and do. We could write the code however we wanted as long as we had a functional game that satisfied his requirements.

A screenshot of a tic tac toe game.
My ugly but functional project 4 tic tac toe game.

I felt overwhelmed at first because it’s intimidating to create even a small game from scratch on your own after programming for only a few months. Like I said, I’m not that good at programming: I ended up spending over twenty hours on each project, but I loved the freedom my professor gave us. I felt stimulated, engaged, and creative during these assignments. They made me excited about programming and taught me more about problem solving, asking for help, and using my resources than any other course or activity ever has.

These were also the assignments I’ve made the most mistakes on in my entire academic career. I did get full credit on each, but the process of getting there included hundreds of error messages. What makes programming interesting and fun to me is that mistakes are normal and common, at least in the classroom. In fact, my first programming professor stated in big bold letters on her syllabus that she encourages us to make lots of mistakes and to learn from them so we can become better programmers.

I particularly appreciate how in programming, you can’t move forward in your code or create a program that works as intended if you don’t resolve errors. Understanding your mistakes and fixing them is part of programming, and this emphasis on learning from your mistakes has been absent in most of my education.

Growing Work In Progress GIF By Simian Reflux via GIPHY.

Programming certainly requires precision and accuracy, but it also has a fun and experimental side. At the end of the day, the goal is to figure out the best way to solve or manage something, and there are lots of things you’re going to be testing out and messing up on until you finally get it right. My programming education has been challenging but also refreshing because in order to succeed in my programming classes, I need to be open-minded, creative, and okay with making mistakes. In much of my high school education, I actually had to be the opposite of this to get good grades.

Expanding computer science education

Advocates for expanding computer science education in K-12 often bring up the growing importance and prevalence of technical skills and digital literacy. I concur with these reasons and want to add that programming classes — especially ones that grant students autonomy — are valuable because they create a space for students “to employ unconventional and out-of-the-box thinking, improving their problem-solving skills,” as Scholarcy co-founder Emma Warren-Jones writes. I can also see these classes being impactful and empowering for girls and underrepresented minority students.

The logistics of expanding and implementing computer science curriculum in K-12 schools — and expanding access to technology in schools located in low-income areas — are out of the scope of this post. But to any educators or school leaders reading this, I urge you to explore the creative benefits of computer science education and push for it in your schools.

Continue the conversation with Karen on Twitter.

--

--