Why I decided to get bad grades in college
Tags: university, postmortem, programming
Published: 2024-01-29 12:27:01

I had a hard time in college. The truth is that there weren't many courses that I didn't like the concepts of. But I really resented the way college taught the courses and evaluated course takers.

After a few semesters, I figured out my own way of learning about computer science, and I didn't change my way in order to get a good grade. My method also evolved a lot over time, but not around optimizing grade acquisition. It was for me to learn better. I wanted to learn my own way, even if it meant I won't get a good grade.

The idea came to me after the second semester, back in 2016, when I didn't go on a two-week new year's trip with my family and spent all of my doing two projects that we had for advanced programming course. One of them was making a Frogger clone game with Processing (a frog wants to cross the endless lines of cars while not being hit) and the other one was creating a web scraper that processed data and presented it in webpages (python, js, html.) 
I remember at some point I had to make a decision, I could take the safe route to implement the frogger game's camera system, OR I could risk it and choose a way that I didn't know much about, but that could be more fun and informative. And I took the latter route. And didn't make it to the deadline. Got a 60/100 for that project. A classmate that started 2-3 days before the deadline got a 100. Objectively speaking, the classmate's project just worked, therefore got a 100. Mine just didn't work properly, although I spent a lot of time and learned a lot of things along the way. I wasn't mad at the classmate because they knew how to get a good grade. They were actually playing the academic game right.

But I fell in love with diving into code for hours. So I decided I'm gonna keep taking the risk even if it means not getting a good grade. Down the line, the same thing happened in our Operating Systems course. The project was modifying functionally of the XV6 OS which is an educational OS. But there, I got a 180 out of 100. I didn't care about the 180 as much as I didn't care about the 60. I just enjoyed my time writing C code and getting segmentation faults after segmentation faults while not being able to print anything in the code because the code was that deep of a level within the OS code.

I was really not good in the theory-heavy subjects for a long time. This was really bad in the academic setting because in my college more than 80% of the grades came from theorical exams.

I think I sucked because of these fundamental reasons:
- For a long time I couldn't make myself focus on studying. I didn't have a method that worked for me, and I didn't try to concretely test and find a method. I think the reason was that I enjoyed pure coding so much that I spent most of my time doing that. So I didn't want to do non-coding activities. Which was not good. The nights before exams were the worst. I still remember the dreading feeling clearly.
- I didn't know why I had to study what I was studying. And nobody talked about why. Courses rarely talked about the reason behind the existence of concepts. And on top of that they presented islands of information. Like a piece of memory that is allocated but never used and the language doesn't have a garbage collector and the OS is malfunctioning too. After a few semesters I just started to make the graph of my knowledge jointed, to the best of my understanding.

As I studied and thought more about the concepts, I really started to like learning theorical subjects too. But, I decided that I want to spend a lot of time and energy grasping the concepts and reasoning behind them instead of minor details that I know I'll forget. The reason was an observation I made on the top graders of our class that forgot most of the course contents a week after the semester.
I kept refining my way of studying. Eventually my last semester's version revolved around reading a lot of textbooks, but focusing on the keywords that I found in different colleges powerpoint presentations. So I was learning things that seemed more crucial to know. And the driving force was asking questions as well as writing briefs for myself. Filling notebooks full of notes was also really really nice.

Deeply learned concepts are not that easily forgotten. Concepts can be stored in your mind and be dissected as abstractions and later be transformed in many different mediums and scenarios within the computer science realm or even outside. For example, you can learn a concept from hardware design and apply it in networks years down the line.

There is a merit in learning and tracing the algorithm details as they expand your brain functionally, and I did that until I felt like I learned the thing that makes the algorithm special. I didn't go as far as memorizing the minor details. If the exam had a specific question of some small detail I would get a bad grade. 

But funnily enough, some point after I really focused on finding my way for learning concepts, my grades improved compared to the the first semesters through which I had a shallower approach. I didn't fail courses as much as before. I even got a lot of As. But I just didn't care about those metrics. I just wanted to learn things.

Looking back at my approach today, I don't regret the decisions, but I think I could've done a few things;
- I could have done better in asking more and better questions when studying things and doing projects. If I asked more "whys" and "hows," I would have had much deeper knowledge. They really make a huge difference. The more uncomfortable and insecure a question makes you feel about a subject that you're studying, the more it shows that you haven't grasped the idea behind it. Today I feel like I have a lot of gaps in my knowledge. I would love to read some textbooks if I can make some time. 
- It's true that I didn't care about grades. But the fact is, if I had spent just a tiny little bit of time and turned in some assignments 50% done, or even 10% or 5% done (any non-zero percentage), I would have not failed at a lot of the courses that I failed. It would have taken 15-30 minutes a week and helped me to not fail a course. With that being said, I don't regret failing the courses that I failed because most of the time, I learned new things about the subjects of the courses.

The way I studied/have been studying realms of computer science over the years, has changed the way I digest world as a whole today. And I love that.
Anyways, I just wanted to share it here. Maybe it helps someone out there too.