How CS50 Propped My Studies in Data Science

Codespace will expire
A Courtesy email from GitHub

CS50 is in the rear view mirror now. It’s been almost one and half months since I started my formal studies and the lessons I picked from Dr Malan’s class have come in handy. This post is a reflection on how CS50 set me up to do well as I started to study. I will focus on four things.

1. A Development Environment

It was a no brainer to find a codespace simliar to the CS50’s development enironment to use for my task assignments. I quickly grabbed a ready-to-go Codespace, with R as a language of choice. Running the codespace from a GitHub repository was intuitive. This gave an environment that I was familiar with and I could focus on the task at hand and not environment tweaking and installation headaches. I did not even consider having a local dev environment.

Use of Visual Studio and the Terminal were familiar territory. The Codespace I chose has the R IDE, R Studio but, I found myself using that less, preffering rather to stay at the terminal. CS50 taught me enough commands and directory navigation to be productive.

2. The Power of Pseudocode

Breaking the assignment task into parts and using that as pseudocode is a useful skill I picked up in CS50. This programmatic thinking helps simplify the problem into digestible chunks and functions are easy to develop and the bigger picture easy to conceive. A block at a time, I can come up with the solution, without being overwhelmed by the entire elephant. This pseudo coding also enhance code documentation. It is easy to track what I need to do.

3. Learning A ‘New’ Language

In CS50 I touched C, Python, some JS, Flask and HTML. For my studies however I settled on R, a language I had spend sometime with. CS50’s philosophy was to instruct enough such that one can teach themselves any other programming language. The fundamentals remain the same, just that the syntax has changed.

4. Debugging and AI Coding Tools

Introduction to Computer Science, gave an environment with some training wheels. With my new setup, I have the liberty to extend functionality by including code-autocompete, utilise Copilot to explain code and assist in refining implementations. The goal now is not to learn programming but to impement good algorithms and solve problems.

This is not all I have benefited, I got enough grounding to take off this journey and now I focus on thinking as a Data Scientist and mastering the necessary tools. I’m spending some time with code:

Changes to commit
Some Time With Code