I’m Simon Archer, and I took CS50 (2014).
What is CS50? It’s an opportunity.
An opportunity to learn something new, to make new friends, to challenge yourself, and to be inspired to do something more.
But more to be to the point, CS50 is a ‘Computer Science 101′ course offered by Harvard University. What makes CS50 a little more special, is that Harvard offers to audit this course to anyone in the world… for free.
‘Wait, so ANY ONE in the world can sign up for this course at Harvard University, and at no cost?’, I can hear you say. Technically speaking, yes.
But of course it with a couple limitations, but very negligible to be truthful, which I’ll address a little later.
But first, let me tell why this course is worth your time…
So what EXACTLY is the course about, and who is it for?
So as mentioned, CS50 is a yearly course offered by Harvard University. And recently they have opened up the previous year’s coursework online (referred to as CS50x) to anybody to view and audit for free. And all you gotta do is a sign-up at the ‘EdX‘ website – a site that hosts a wide variety of similar ‘free to audit’ courses from just as respectable institutes, from where you access the courseware and track your progress.
The courseware is broken up into ’11 weeks’, each with professionally recorded lectures (each roughly 50 minutes), a variety of supplementary videos related to each weeks’ topic, a total of 8 problem sets (submittable projects) littered through the weeks, and a final project at the end of it all.
So once you sign-up to the EdX site, and after ‘enrolling’ in the course you have instant access to close to 100% of the course’s work which real Harvard students attended the year before, all in high-quality recorded fashion. Each week covers a topic or two, and then theres a problem set to tackle before moving onto the next week.
While you audit the course the problem sets are of course optional, but whats the point if you don’t challenge yourself while you follow along. You will find that even if you had no experience in the topics before hand, if you participate in the challenges you will find yourself writing code and making executable programs in no time… You’ll no doubt surprise yourself about your new found understanding and abilities!
But you might also ask, what makes this course different to dozens of other online courses out there that teach you some computer science skills? Well, that’s a very good question. For someone like myself who has also attempted various courses with varying degrees of completion, this course has a special something, or rather, someone, unlike any other…. And that is Professor David J. Malan and his supporting staff.
David Malan is this course’s ‘x-factor’, and the flying success of the open learning CS50x movement is all thanks to him. David is incredibly charismatic and genuinely passionate about the course material he teaches, and the collection of student staff that help him manage and drive the course are just as equally so. In fact, the course has become so popular other institutes are looking at following in it’s footsteps.
David’s teaching style is fun and engaging with frequent student participation which help visualise and grasp sometimes hard to understand concepts. Since sometimes the lectures doesn’t have the time to explain things in the finer details, there are then supplement recorded ‘Sections’ which is smaller, intimate sessions which spends a little more focused time to work through some examples of the previous lectures topics and prepare yourself a little more for the upcoming problem sets.
The problem sets are the 8 challenges which you are encouraged to do to put to practise what you have learnt and get you coding. You will get familiar with writing and debugging your code, and make you more familiar with memory management. There is also an optional path for people who are a little more experienced and offers greater challenges, so regardless of your previous experience there is a challenge for everyone.
So what do you ultimately learn from all this?
Computer Science is a broad industry and there is of course a LOT more than just what you hear and learn about in the 12 weeks. It is, of course, an introductory course. But that is not to say it isn’t going to equip you with real world skills…
As far as development languages go, the course starts you off with the ‘C Programming’ language. A base language which many more modern languages often fork off from. This language is used and given focus because it is mostly ‘bare bones’ and mastering it takes more skill and tests ones deeper understanding. While modern languages have built in memory management, with C you have to be a little more aware on how your program uses memory and definitely makes you a better developer with that understanding, I believe.
You then branch off later in the course to doing some HTML and CSS, mixed with a touch of PHP and SQL. At the end of the course you are encouraged to do a final project, which doesn’t limit you to any language or platform.
But more beneath all the code writing, this course teaches an arguably more important skill…. problem solving.
I’ll be straight, for a newcomer to the field of CompSci, this course is not easy. It is, of course, a Harvard University course after all. And with that expect yourself to be challenged. But what David tries to teach early on is an understanding of how things work and why they work, and then the tools necessary to work through, plan and overcome your challenges. You will get stuck, and the ability to overcome those times, solving your problems using the tools available to you, is the biggest takeaway from all this.
The reason for the focus on problem solving, more than anything else really, is that it prepares you for whatever language you will end up working on if you pursue a career in the industry. While computer languages are plentiful, they ultimately have very similar roots in the concepts and logic they use. And understanding and problem solving these concepts early on make you better equipped no matter which language you end up using.
Can I do this on my own?
Yes. This course, as I explained already, is challenging, but completely doable. It does of course require you to commit to it though but the reward of seeing it through to the end is unmeasurable. Especially for newcomers to the field, seeing your progress from week 0 all the way to the final project is something which is incredibly powerful. I can’t stress it enough how rewarding the experience is.
But even though you can do it on your own, it doesn’t mean you ARE on your own. This course is open to everyone, any where in the world, and because of it’s popularity it has flourished an amazing community of similar and likeminded individuals who are going through all the challenges with you, with various degrees of previous experience.
The CS50 Facebook group will be your new family as you take on this 12 week journey. Almost daily there are new recruits to the course while there are dozens and dozens of ‘seasoned’ course goers who hang around and support the newcomers as they make their way from week 0 to the final project.
But while the community is incredibly friendly, welcoming and supportive, don’t expect them to do your work for you. Be prepared that they are there to help with understanding or help debug a peice of code which breaks for no recognisable reason, and encourage you to do most of the problem solving work yourself. But if you ever get stuck, the wealth of experienced knowledge available there is enough to get you through the toughest of times. So you never need to feel completely stuck, defeated and/or alone!
What has it done for me?
So this post was longer that I intended it to be, but as someone who recently completed the course, I wanted to give maybe some other interested people looking to do the course a little bit more background on what CS50 is all about.
So, as for me, 5 months later from starting week 0 I submitted my final project and completed CS50. It is one of the few online courses I have done which had me as engaged and committed, and gave me the greatest feeling of accomplishment. It is incredibly special in that way.
Before I started I was a hobbyist coder. I have been pursuing a career in development for a few years now, both via a part time college course (which has been on and off for me, since it isn’t as software development oriented as I would have liked) to the many online courses out there.
After the CS50 course though, I happened to have had the opportunity for an interview for a junior developer at a local software company. If anything, I went for the interview more for the experience, since generally the people they hired were university grad students at the very least, and here I am with no formal qualification or development experience. But I thought of it as a good way to test the waters of what to expect for when I do one day feel I am ready to look for jobs as a developer.
Truthfully, I wouldn’t of even had gone to the interview before my time with CS50, but completing CS50 gave me the confidence to take a chance. Sure, I wasn’t technically experienced, but I could engage in the various discussion around databases, coding concepts, and work out some on the spot coding problems.
I guess I am now a developer. Life after CS50…
Making what could have possibly been a short story long, after both a character based and a technical based interview, a couple weeks later I was offered the job as a junior developer.
I juggled feelings of incredible excitement and sinking feelings of doubt for the next couple weeks as I resigned from a position of a QA specialist, to now a developer in a well respected company.
“Do I know enough? Can I do this? What if I suck? What if I mess up? What if I’m just not good enough? Do I even know what I’m doing?”
These are just a FEW of the things and feelings that followed me up to this moment. The moment I go form a hobbyist coder, learning code in the late hours of the night in my spare time, to an actual employed full time developer.
The fact that I was, they say, the first ‘unqualified’ hire they have done both speaks of my ambition to get this far, as well as the amount of pressure I felt to not let them down or have them regret my hire.
I’m a cautious and a bit of a realist guy, so all manner of possibilities about how this could go has gone through my mind. I don’t want to be too over confident, but at the same time I don’t want to sell my abilities short..
The challenge was on. I have been aspiring for this opportunity for many years now, and now it has been given to me. I though that it would be a good excercise to document this journey. To hopefully look back and see how far I have come. And even possibly, give other people hope that anything is possible. And that CS50 can ‘change lives’ as I feel it helped change mine this year. Without it, I don’t believe I would have ever had the courage to even go for this interview or be prepared for what was asked.
I hope to document my life starting as a junior developer and see where it takes me. The challenges I face and how I overcome them, if at all. My goal for this blog is too hopefully inspire other ambitious wanna-be developers out there. To take your goals and ambitions into a reality. Also, to maybe shed a little light into the world of a junior developer!
So now, it has started, and this is my journey.. Starting at week 1.0