In my previous post in this series, I talked about my desire and plans to study Computer Science. I considered the various available options and I concluded that it was probably best for me to "craft my own CS degree". So in this post, I will briefly discuss this and outline the process that I went through in deciding on how to go about this.
My initial plan was to spend some time looking at different CS curricula from various high-profile universities – comparing the structure, looking at common themes and so on, but I realised that that would be quite a significant undertaking and I didn't have that much time – I needed to make a decision quickly and get started immediately. In the past, I have often wasted a lot of time over-analysing things and coming up with very intricate plans – only to later on miserably fail to implement them😒! Therefore, this time I decided not to waste time over-analysing and overthinking things, especially given that people smarter than I have already encountered this and done the work already! I mean, I already talked about teachyourselfcs.com in my previous post and I agree with their suggested 9 subjects as being essential for every practising software engineer. The OSSU curriculum is great, but I think it's too detailed and rigorous. It's very easy to lose focus and go down the rabbit hole. As I mentioned in my previous post, I have very limited free time, so I have to make the most of it. Following the OSSU curriculum would not be a prudent use of the limited time I have. 10 years ago, it would have made perfect sense to delve into the OSSU pathway, but things have changed now. A clearer, more succinct and optimum pathway is what I need, and teachyourselfcs.com does it for me.
While I'm set on following the teachyourselfcs.com approach as a guide, I will not necessarily follow the recommended videos/lectures suggested for each subject. I decided to tweak things a little bit and come up with my own structure based on what I was trying to achieve at the end of the day.
I would like to learn the foundational CS principles and concepts but I would also like to earn a qualification while doing so because God-willing, I'd like to enrol in a Computer Science Master's programme in the near future. The Folks at teachyourselfcs.com say that a Master's degree is not important. Well, I respect their view, but for me, I would like to pursue a Master's degree – not that I need it but I think it's something nice to have as there are certain kinds of clientele that specifically demand a Bachelor's or Master's degree.
In light of the foregoing, I will be selecting those courses that allow me to earn a certificate as that will greatly help me as I seek to gain admission to a Master's programme at some point in the future. This means my primary focus will be looking at the various available MOOCs such as Coursera, edX, Udacity and so on. So I went over to classcentral.com, created a profile and used it to find courses and make comparisons. Class Central is quite an excellent resource, you should check it out if you haven't already!
After making comparisons of the various platforms, I settled on Coursera because for $399 a year with the Coursera Plus subscription (I was fortunate to get a $100 Black Friday discount for the first year, so I actually paid $299 ☺️), I have a wide array of courses to choose from and the freedom to pursue them in my own time and at my own pace. I concluded that this was the most cost-effective way for me. The key thing is to manage my time wisely and pick the courses that would provide the most value.
Of course, Coursera isn't the solution for everything – I will certainly have to look at other platforms (and find the money 💵 to pay) for specific courses of interest.
I'm looking at a timeline of about 2 years to cover these 9 subjects. In the first year, I intend to focus on the first 4 items on the list:
Data Structures and Algorithms
Math for CS
However, before rushing to get started, and before I even paid for the Coursera Plus subscription, I decided to give myself a challenge by enrolling in a course with a free certificate (outside Coursera) and ensuring that I completed it within the indicative timeframe. I've enrolled in such courses (and programming tutorials) before – there are very very few that I've actually completed 🙈! I thought this would be a good indication of my readiness to do this. I told myself that if I struggled to complete this one course, then perhaps I wasn't quite ready to commit myself. I enrolled in the Starting Up course offered by Aalto University and MinnaLearn and I tweeted about this (it's been said that people tend to be more committed to their goals after they share them). I was able to complete it in just under 4 weeks, which was great because the indicative timeframe was 6 weeks. This gave me some confidence and helped me identify my weaknesses and plan my time, so I think I'm now ready to roll!
Because of the limited Black Friday deal (which I find out via ClassCentral), I actually ended up subscribing to Coursera Plus before I even completed the Starting Up course.
Since this is no trivial undertaking, involving learning lots of new stuff, I thought it necessary to spend some time learning how to learn. Therefore, before I delve into the 4 focus areas for the first year, I enrolled in Learning How to Learn: Powerful mental tools to help you master tough subjects, a highly recommended course. I know, I'm supposed to get started with CS already, right? Well, I need to make the most of the limited time available, which means I also need to master the technique of learning so I can learn new things effectively. So this is something important, and my future self will surely be most grateful that I did this!
I intend to begin the first-year journey with Fundamentals of Computing Specialization offered by Rice University. This covers 2 of the 4 subjects (Programming + Data Structures and Algorithms). There's an indicative completion timeframe of 6 months, we'll see how it goes – hopefully, I can do it in less time. I'll be reviewing progress and evaluating things along the way, let's see how it goes! Until the next time .... adios!