Learning, Teaching, and Changing Computer Science


Like many of you, I’ve struggled with coding. It never truly came “naturally” to me. My journey through learning to code has been constant fluctuations of struggle and hope. Nevertheless, my love for the subject never wavered. I went from being a struggling computer science student at UC Berkeley to teaching high school computer science at the local level. Now, I’m proud to be a curriculum developer at Codecademy, spreading my love for coding education to the world.

My experiences in computer science as a student, teacher, and curriculum developer have given me a perspective on the state of computer science education that I would love to share with all of you.

A Computer Science Student

On my first day at Berkeley, I walked into a large lecture hall with 2,000 of my peers to attend my first lecture in computer science—CS 61A. I didn’t really have any friends at this point in college, so I found an aisle seat that allowed for a quick exit if need be. The professor walked on stage along with dozens of TAs, and the audience seemed so energetic that I felt I was at a concert.


A CS 61A Lecture at UC Berkeley.

Within his first three sentences of speaking, the professor said something along the lines of, “How many of you have learned Python before?” This seemed like a silly question, for this class was supposed to be an introduction to programming. Nevertheless, two-thirds of the class confidently raised their hands, a sight that rendered me breathless. Afterwards, the professor jumped into programming concepts, but my mind was blurred from feelings of unpreparedness. Halfway through the lecture, I realized I didn’t know anything that the professor was saying, and I left (that aisle seat was the right move).

Nevertheless, I figured I would feel this way at Berkeley, so I persisted. The lecture was posted online, and I rewatched it twice to grasp the fundamentals of programming. That first night, I was supposed to download Python, but I somehow managed to download a virus instead. Needless to say, it was a little embarrassing walking into my first office hours and asking a TA to help me get rid of a virus that occurred because I spelled “” wrong in my browser. The TA was extremely helpful and resolved my virus.

I finally got to start programming and I fell in love with it. I spent the semester getting lost in my code and resolving bugs for hours, and the time flew by because I was so invested in solving the problem at hand. For me, computer science is one of the most personally satisfying fields of study because there is instant gratification when you run code. The result of your work will show in your terminal before you blink.

Despite my passion for the subject, I didn’t do as well as I hoped in the class. I knew that I should not compare myself to others, but it was hard seeing my friends excel so much more than me in a subject that we all had passion for.

The following semester, I vowed to do better in my data structures and algorithms course. I decided to do every project alone and struggle for days until I found a solution. I performed average in that class, but I finally felt confident in my abilities as a coder. That feeling of confidence resides in me today, even when I perform poorly on tests or fail to complete projects, for as much as programming is about actually finding a solution, it is also about the willingness to find a solution.

What I didn’t realize is that I was one of the lucky few. Many students who are underprepared going into college often lose confidence in themselves as programmers, fail to declare computer science as a major, or never go into a computer science class in the first place because of the seemingly high barrier to entry.

A Computer Science Teacher

It is unfortunate that there are so many people who feel like they are not capable of learning computer science. After coming to this realization, I became invested in computer science education. I joined the teaching credential program at Berkeley, through which I had the opportunity to teach computer science to the students of Berkeley Unified School District. Through my teaching experiences and education courses, I have become open to the unfortunate truth about computer science education in high school: it is under-resourced and under-thought.

In order to frame a context within my own teaching, I began researching how computer science education has progressed in this country. The results were not promising.

Until 2017, there was only one mainstream computer science course for high schoolers—AP Computer Science A, and only 17% of high schools that offer AP Courses offered AP Computer Science A. In 2017, we saw a sharp increase in the number of students enrolled in AP Computer Science due to the addition of AP Computer Science Principles as a course, with 37% of these students learning curriculum on


Source: via College Board.

Though this may seem promising, these numbers don’t describe the actual computer science curriculum being taught to high schoolers. AP Computer Science A is taught in Java and largely focuses on syntax rather than creativity. It does not accurately reflect the wonders, abstractions, and endless creations that computer science can offer.

As a teacher, I observed that this syntax-based approach deterred many of my students from loving computer science. I often found myself straying from the traditional curriculum in order to introduce a more visual approach to teaching computer science. I would have my introductory students create apps using MIT App Inventor to understand coding logic while creating cool, visual applications, and I would have my AP students perform relatable data analysis projects to visualize real-world problems, such as climate change and income inequality. I found that when students could see the visual impact of programming, their interest in the subject spiked.

The curriculum is one of the many issues that high school computer science landscape faces. Another major issue is the lack of computer science teachers. Across America, there is a need for more teachers; however, this deficit is even greater for computer science teachers. On average, there is only one computer science teacher per school district in the nation.

With the technology industry growing exponentially, this is a statistic that should scare everyone. There is a growing need for programming knowledge, but not enough people to teach it. Personally, I would love nothing more to be a computer science teacher for the rest of my life, but the financial burden of teaching creates tough decisions for computer science graduates who can make three times as much as a software engineer.


An animated clock app built in the MIT App Inventor (Image via YouTube)

A Computer Science Curriculum Developer

Nevertheless, I began looking for educational technology companies where I could combine both my passion for education and my computer science skill set. I knew that Codecademy would be the perfect place to work, and I refreshed the jobs page every week from October to March until the Curriculum Development internship appeared on the site. I was more than ecstatic when I received the job and have now had the opportunity to reach millions of students with my work on the Computer Science Path.

As a curriculum developer, in addition to creating interactive coding exercises, I have used my experiences to create more visual, conceptual interactions for the learner in order to break the barrier of coding. Here’s a cool conceptual interactive applet I built for learners to learn binary search that’s included in the uPro Intensive, "Computer Science Basics: Algorithms." I’ve also been adding conceptual videos that are in another Pro Intensive, "Computer Science Basics: Data Structures."

Through my experiences as a student and a teacher, I became aware of the necessity of visual interactions in computer science education and have developed my curriculum with the impact of interactive visuals in mind. It has been an absolute joy to see my curriculum be available for millions of learners to receive an accessible, visual, and interactive computer science education.

A Challenge to the Reader

Through this blog post, I hope I have made it clear that computer science education (especially for youth) is at a stressful crossroads. So how can you help make it better?

After taking a couple of Codecademy courses and building some of your own projects, you may have now developed a wonderful confidence in yourself as a programmer. I challenge you to take this skill set and educate the people in your community.

There are a variety of ways you can do this. You can volunteer for existing computer science teaching organizations, such as Girls Who Code, Black Girls Code, and ScriptEd. If these organizations don’t exist in your community, you could perhaps start your own local teaching group where you empower individuals to learn the necessary skills to upgrade their careers.

Computer science is truly for anyone, and the ability for anyone to learn it is a goal that we should all work towards.

Related articles

7 articles

What Is a Computer Network?

By Michael Klein

Have you wondered how computer networks operate? Learn everything you need to know about computer networks and why they’re so important to developers.