Daniel Griffiths

Studying to become a Software Engineer

When I embarked on the mission to begin educating myself as a software engineer late in 2022, my programming “knowledge” amounted to little more than excel if statements taught by the “University of Googling”. In hindsight, it actually offered some preparation for entering the programming domain, but as you’d imagine its value was exhausted very (very) quickly.

While deciding where to begin the self-study journey, I was torn between either paying for a bootcamp or trusting free online content. In the end, I opted for the zero-cost route.

I settled on Harvard University’s Computer Science online course known as ‘cs50x’, as taught by David Malan and his excellent team. What follows is a synopsis of ‘cs50x’ and the other Computer Science courses I have studied so far. I intend to write individual blog posts to capture my opinions and learnings in each course, which will become available via the ‘Blog’ link in the navbar.

cs50x course

Harvard University November 2022 - March 2023
Harvard’s one-stop-shop CS course for the ‘self-studier’. There was a wave of initial panic when I failed to run the first C program demonstrated in class. Stout resolve was needed here as I plodded my way through 6 weeks of C Language programs (I’m better for it), followed by three weeks of Python programming. The investment in time was well rewarded, as I now have a robust knowledge of fundamental programming techniques and a hardened resolve to attempt more complex programming challenges.

How to design data - Easy

University of British Columbia, CAN
January 2023 - ongoing
This course is sourced from the OSSU curriculum. My introduction to ‘functional programming’ in the language of Dr. Racket was enlightening. Completing the large library of program problems strengthened an ability to write functions and define data correctly. I had plenty of practice at writing recursive functions and the process of decomposing functions into helper functions. I, and apparently others too from reading online, struggled with the final ‘space invaders’ project, so I am intending to complete it before the course deadline expires at the end of 2023.

Python 4 Everyone / Automate the Boring Stuff

January 2023 - February 2023
I studied these two python courses as prep for completing the python section in the cs50x course.

C# Programming with Professor Sluiter

March 2023 - May 2023 Before beginning this course, I had not been exposed to Object Orientated Programming. I was about to begin work experience in an Engineering department using C#, so I used these ‘code-along’ C# courses as preparation. It was good exposure and I came away with an understanding of the theory of Abstraction / Encapsulation / Inheritance / Polymorphism, however, I was left with the impression that I needed to complete many more C# program problems to build the muscle memory to code more successfully in this framework.

Programming Languages - Part A

University of Washington
July 2023 - Ongoing This course continues the OSSU curriculum. Part A teaches recursive functions to solve programming problems. I am making progress but for now have prioritised other courses such as ‘cs50 Python’.

cs50x Python

Harvard University
July 2023 - Ongoing
Due to the experience and knowledge gained from completing cs50x, Harvard’s python course has been straightforward. I have been able to solve many program problems much quicker than in the cs50x course. As at October 2023, I have only the final project to complete.

Books

‘Thinking Like A Programmer’ by V. Anton Sprawl
Excellent companion to have as a self-study student. It filled in so many blanks that had been building up since I started studying and is filled with many useful techniques for problem solving and programming.