Why Failure is Important in CS

“Only those who dare to fail greatly can ever achieve greatly.” — Robert F. Kennedy

No one is perfect. Therefore, no one is expected to do everything perfectly. No one is ever expected to have perfect code or understand computer science concepts right away. We are humans, not robots programmed to perfection.

I’m fortunate to be studying at the University of Toronto, a top university in Canada (and my dream university since middle school). The University of Toronto is well known for its computer science program, which makes the “top ten computer science programs in the world” lists each year. However, my academic experience thus far at U of T Computer Science has not been the way I wanted it to be.

I noticed my marks drop in my first semester. I cried when I got a C- in my first CS midterm for university because it was “easy” and I was expecting to do well. (I often put “easy” or “hard” in quotes because CS is subjective.) I failed two CS midterms. I failed three problem sets and two midterms for calculus. Upon seeing these results, I decided that it was time to change my study habits and come back stronger next time. Well, kind of. I dropped my calculus course because I thought it wasn’t the right one for me, and took regular first year calculus over the summer. I was happy when I saw my final marks; I had done so much better!

What I discovered during my time at U of T was that struggle brought many people together. A lot of people in my program would often be supportive of one another and try to be there for each other. Study groups are very common; I would see my fellow colleagues at the Bahen Centre working together on a project, preparing for an exam, or even just catching up on homework. This is mainly due to the fact that people in CS share the same, if not similar, goals, and that it’s necessary to ask as many questions as possible. I made sure I had a partner or group for my assignments. Despite all this, I mostly studied by myself in first year and would go home right away.

It was around the end of first year that people suggested to me that I form study groups with other classmates. I would hear positive experiences about study groups, and so I was willing to try them out. I visited the Computer Science Help Centre and saw some of my friends there, so I decided to join them in their studying. They were there pretty much every day. I made it an effort to study with them whenever they were there. We were all studying for our Intro to CS exam. I made sure to ask questions whenever I got stuck and reviewed the course material. I even worked on past exams and discussed the answers with my group. I did this for about two weeks before my exam and felt confident about what I’d studied.

I went into the exam. When I opened it, I was shocked at the difficulty of questions. I blanked out, not knowing how to approach 90% of them. I had bad anxiety, which caused me to forget what I studied. I didn’t want to give up. I needed at least a 40% on the exam to pass the course. So, I finished all questions except for one. If we were to leave a question blank or write “I don’t know,” we would get 20% of the total marks of that question. I left the exam with a bad feeling; a feeling that I failed the course. I later found out that the exam was difficult for most of us.

I waited quite a long time for the marks to be up. By the time they were posted, I checked my mark and was extremely frustrated. For the first time ever, I received an F in a course. It wasn’t just any course, it was a prerequisite for my major. I cried a lot of tears but also talked to people about it. I posted on Piazza and Facebook and received positive comments. The Piazza post that I made compelled one of the professors in the course to reach out to me via email:

I felt moved by this email. This professor has started to inspire me a lot more. This email was also reassuring because she went through something similar in her first year and she is now a professor. Since this email, I began to talk to her more and more and her support for students like me is spectacular. I did feel a bit depressed because of it all, but I accepted my failure last August. I told myself to move forward and stop dwelling on that thought because it would ruin my future.

When the new school year began, I was very excited to try the course again and do a lot better. Although I didn’t see great improvement, I did understand recursion and OOP a lot better than when I first took the course. I eventually did a lot better the second time around and finally moved on to the second year courses. My professor praised me for my work ethic and interest in the material despite not doing well on the midterms (the averages were in the 70s). But that didn’t stop me. I now see failure as an opportunity to improve and grow as a computer scientist, not a sign that tells me that I’m in the wrong field. To this day, if I didn’t fail, I would not have the confidence that I possess now and my passion would not have grown. Thus, I am thankful for that experience.

In computer science, we all start as beginners. Failure is bound to happen, but without failure, we will not grow. I hope that those who want to pursue a computer science degree keep moving forward, even with failure in the way.