What I’m Learning In

Harvard CS50’s Introduction to Programming with Python — Full University Course

Richard Ogujawa
3 min readAug 25


Harvard CS50’s Python Programming Course

I’ll be be beginning a Masters in Data Science in a couple of weeks so I wanted to brush up on some of the programming concepts we’ve learned so far in Python. I intend on finishing this course, and then taking on another course in SQL, so that I can put myself in a good position to spend a bit more time on other things regarding the course.

Fortunately, a lot of what David Malan, the lecturer, is teaching in this course, I’m already aware of thanks to the preparatory classes for Programming provided by ATU for the Master's Degree in Data Science, and another online course I completed a year and a half ago. However, given that this CS50 course is about 16 hours long Mr.Malan is afforded the time to go a lot more in-depth about certain programming concepts. This seemingly unbridled deep-dive into certain programming ideas opened my eyes not only to the capabilities of programming in Python but just programming in general.

Somethings that this course helped me with improve my knowledge on include:

  • Regex— regex has always been something that I neglected to look into because I thought I could get by without it, and if I ever needed to use I was comfortable with resorting to chatGPT for a viable solution. However, this course helped me see regex a lot more clearly, not only in terms of how to go about implementing it, but it also offered clarity on the purpose and benefits behind the use of regular expressions.
  • Classes — I have used classes before, but over the past few years of coding, I can count how many times I’ve done so on one hand. Whenever I used it, it always seemed crowbarred in. The way in which I implemented it, often gave the impression that I was doing so just to show that I was aware of this feature of the language, as opposed to using it because it would provide the best solution given the problem I was trying to solve. However, after learning about classes and instances from the perspective of it being essentially dictionaries with more capabilities, it opened my eyes to possible use-cases that I had never considered before.
  • File I/O — I’ve been using File I/O before I even realised what File I/O was. And every time I saw the term ‘File I/O’ I often brushed past it because I assumed it was something beyond my level of comprehension. However, Mr. Malan’s intricate explanation of the term with regard to it simply being how we read and write to files really helped ground my understanding of the term and also his explanation of functions like open() and methods like csv.dictWriter() helped me better understand how the many tools available to us to perform these File I/O operations work.