As with a lot of online courses, I'd been peripherally aware of HarvardX's CS50 for a number of years before I finally resolved to sit down and participate. 

CS50 is a first year university course offered by Harvard University and more recently, Yale University, which dives into the basics of computer science, exploring algorithmic thinking and teaching students how to code in a variety of languages including Scratch, C, and Python, amongst others. In the last few weeks of the course, it offers a choice of three tracks - game, web, or mobile development that students can explore and create their final project which is encouraged to be something which is useful beyond the course.

The online course which is known as CS50x offers a stripped down experience of the real course. The assignments, known as problem sets (or psets), are marked against certain criteria and a number of test cases by an automated program. All of your coursework is pushed into individual branches of your own CS50 GitHub repository. I've copied these branches into a single repository for ease of perusal, which can be found here.

My Background in Coding

Where I started with coding.

Cover Image

When I was 10, my sister was learning QBASIC at high school. As most younger siblings do, I harassed my sister to entertain me almost constantly. Eventually, my sister got annoyed with me and handed me some floppy disks with games on them so I would leave her alone. These games were written in QBASIC and the files were not compiled, so I had to open the IDE (or the equivalent of) to play them. After I quickly got bored with the rather simple games, I started to mess around with the QBASIC code to see what would happen if I changed things around.

From this, I taught myself how to make my own programs; these were usually quizzes that I asked everyone in my family to complete and usually were some form of Harry Potter trivia (I was seriously obsessed). My sister was also learning HTML at school and those floppy disks contained some of the websites she'd built. They were your typical 90s web design fare with animated GIFs, marquee and blink tags, and clashing colour schemes. As with the QBASIC programs, I opened these webpages up (with some guidance from my sister) in Notepad and started moving things about to figure out what was going on. This was late 1990s, early 2000s and we had the internet but my mum ran a business so I was only allowed two hours a week on the internet in one hour blocks so I didn't tie up the phone line for too long.