Harvard is, of course, one of the best and most well-respected universities in the world. If you’ve ever wondered what it would be like to be in the privileged position of students lucky enough to attend Harvard then you’ll be glad to know we are living in a world where you can find out. Since 2016 their CS50x course, along with many other courses in a variety of subjects, has been available online for free. These courses are known as MOOCs (Massive Open Online Courses) and are a provide wonderful learning opportunities for anyone with an internet connection. CS50x provides a thorough introduction to computer science with engaging lectures, helpful videos and challenging but rewarding assignments. The course covers the fundamentals of data structures and asymptotic notation including the implementation of hash tables, tries and linked lists.
The CS50x course has been running for many years at Harvard and is currently delivered by former Harvard and CS50 graduate Professor David J. Malan. His enthusiasm for his subject is infectious and I found his lectures to be highly engaging and informative. The course is separated into 13 weeks but in reality it can be completed in a time-frame of the learner’s own choosing. Each week has a lecture and short helper videos, and most have assignments. The assignments, known as “problem sets”, facilitate practical application of the concepts covered by the week’s lecture. Each problem set is estimated to take around 10 to 20 hours to complete and the entire course is estimated to take around 200 hours in total. For some assignments there are advanced ‘more comfortable’ options for more experienced or ambitious students to really challenge their abilities.
I found the assignments to be genuinely challenging; they are designed in such a way that they require real thought and planning to complete. On many occasions I found myself having to get out a pen and paper, revisit the accompanying videos and spend time really thinking through the problems. It was all worth it in the end because the hours of struggling were eventually followed by a real a-ha moment and a genuine feeling of accomplishment. The tasks involve interesting challenges such as cracking passwords, building a spellchecker, working with the Twitter API and developing functioning web applications with SQL databases.
The last assignment of the course is the final project where you’re given the opportunity to come up with your own project which applies the knowledge and skills you have developed over the previous weeks. For my final project I decided to make a web application which used the Twitter API to build a quiz about your friends. It was my first web application and ended up taking me on a journey into learning about NodeJS and AngularJS, discovering a passion for web development and ultimately becoming employed as a Junior Web Developer. If you’re interested, the web application is called TwitFriends and more information about it can be found in my projects archive.
E-learning has notoriously poor completion rates; it’s easy to start but, without the normal social pressures that accompany traditional qualifications, it’s also easy not to finish. With that said, we are living in a golden age of opportunities for education and the benefits for anyone motivated enough to complete the course are well worth the effort. CS50x is one of the finest examples of the potential of e-learning and it’s available for free to anyone with a computer and internet connection. I’m incredibly grateful that that’s the case and I’d recommend it to anyone with an interest in the subject matter. For anyone wishing to sign up for the course, you can do so here.
PHP 7.4 was released on 28 November 2019 and with it comes a lot of new features. In this post we'll examine a few of the more interesting ones along with examples of how they can be used. PHP has long been the punchline in low-effort memes, and though some of the disdain for the language is justified, more recent… Continue reading »
We're going to create a bash script which runs mysqldump (a MySQL backup program) to generate a database backup with a filename containing the date. We're then going to set up a cron job (a utility for running scheduled tasks) to run the script at regular intervals. We'll do all of this securely so that other users on the server can't… Continue reading »