Woah, it’s been a long time since I published here on The Marketing Programmer. A lot of things happened. I started my first semester of university at the University of Calgary studying business and did not find the motivation to work on the CS50x course. But winter break hit, and I gained some new revelations that motivated me to continue learning to code again.
So here I am, six months since I last wrote part 5 of The Harvard CS50x Adventures. Welcome to Part 6 of The Harvard CS50x Adventures.
Six Months Later…
I forgot a lot. Pretty much everything, if I’m going to be honest.
When I resumed from where I left off, everything was pretty foreign to me. I was watching the shorts for week five, which focused on concepts involving data structures. The topics included were single-linked lists, hash tables, and tries.
Over time, I began to recall everything and understand what Doug was talking about.
The main idea that I grasped was how we evolved by combining different concepts to create ways to store data that were more efficient and better in some instances. For example, arrays were great for searching up and sorting items, but they are rigid. It’s hard to change an array’s size and add new things into your data structure compared to something like a linked list, where all you have to do is tap the new item onto the list.
The gears in my head started turning again. I began grasping computer science principles… well, at least until I had to work on the problem set.
I’m Just Not Getting It
Computer science is hard. Ever since week three, it seems like this course’s difficulty level suddenly took a jump.
I thought it was because maybe I wasn’t old enough. Perhaps, I was missing some experience that would make learning more manageable because I haven’t spent enough time alive. But I started university. And my first semester had passed. The Harvard CS50x course is an introductory computer science course that first-year students at Harvard often take. And it’s designed for people that have never done anything related to computer science too.
I couldn’t solve any of the problems right away. I needed help on everything and only got through the problem set this week by watching tutorials on how to do it.
It makes me wonder, am I bad at computer science? All the university classes I took in my first semester were easy and straightforward. I started thinking about people my age who are majoring in computer science. Did they experience the same thing as me? Or am I an anomaly?
I’ll Learn Everything Again Later
Then I realized, things take time and practice. For me, I have never been someone to pick up anything and be a master instantly. Every concept took me two times to understand and at least three times to master.
For example, I was a good math student during middle school. The main reason was that I already learned middle school math earlier by doing Kumon. Kumon helped me make it into a gifted and talented education program where all the students were learning one year ahead of them. So in grade 9, I was actually learning grade 10 math. When I entered grade 10, I aced math.
But it wasn’t always that way.
In fact, back when I was doing Kumon, I had a ton of issues with math. I couldn’t get it at all. Whenever I got my worksheets marked, I was getting more than half the questions wrong. It was the most frustrating experience ever, which is why I quit the Kumon math program without finishing everything. That led to me performing poorly in my senior years of high school because I was learning everything for the first time.
I only realized that I didn’t grasp things instantly recently. It started to make sense why the first three weeks of the Harvard CS50 course was relatively easy for me. I had already begun the course once before, but I never finished it. During my first trial, I got through the first three weeks.
It was definitely tricky the first time. I had the same amount of trouble I am having now where I have to watch a lot of tutorials and see other people solve the problem before I understand how to solve it myself.
Because I restarted the course when I tried it the second time, I solved the problem sets in the first few weeks all by myself. After hitting week three, however, everything was new, so I sucked again.
It doesn’t matter if I can’t understand what I’m learning right away, though. I can always review old concepts and gain a firmer grasp later on in my life. As I program more and gain exposure to different types of concepts, basic ideas I learned before will also start to make more sense.
Additionally, I want to keep this blog going. I want to take lots of courses and review all of them. I will probably take a different introductory computer science course, allowing me to kill two birds with one stone where I write a review and get a review.
A New Format?
In this article, you might have noticed that I didn’t focus on specific computer science principles all that much. I would have a few sections dedicated to particular computer science ideas I learned most of the time.
That might change.
I want to make my programming adventures series more focused on my experiences and reflections. Explaining the ideas from the course in these adventure blog posts takes away from my focus on myself. I often end up looking at the notes from different weeks and repeating them with different words.
Sometimes it feels like my blog loses its authenticity because my explanations are often not my own. To make this blog unique, I have to own what I write. Thus, before I explain any computer science principle, I have to own it and repeat it from my head. I can’t be talking about something that I have to reference from a course. As you read from the section above, I’m a beginner who’s going through many of these concepts for the first time. Everything I’m learning is somewhat foreign to me.
Every time I write one of these blog posts, I’m not going to include exactly what I learned in the course unless it is relevant, and I can repeat it without referencing the course. For example, I talked about arrays versus linked lists close to the beginning of this blog post. That’s something that I do remember learning about and can repeat without referencing anything else.
Otherwise, these blog posts will be a reflection of my experiences.
Pushing Forward Consistently
It has become apparent to me that consistency is what makes me successful. I also found that if I think about becoming a programming expert and building the world’s next billion-dollar software company within a few days, I would try super hard and become lazy after failing to reach unreachable goals.
Instead of learning programming to create apps and change the world, I’m going to focus on having fun. Every day, I’ll spend whatever time I have on programming, just for fun. The only thing I’m focused on is getting better and learning.