I’ve been involved with web development for more than 10 years. yet my story is a little bit unordinary. . From the beginning, I used WordPress to run content-based sites, so it may not be considered real programming works. Then I moved on with Zend Framework to build a sharing file service (like MediaFire). After that, I got hired by Yahoo! as a Product specialist before I’ve managed a startup team to built a Hulu clone site for the local market. (Btw, my startup has failed due to the bad business model). After that, I’ve tried others but still failed then I’ve become a government officer till nowadays. The thing is that I am a self-taught developer, as the result, at that period I just focused on building the final product without a deep knowledge of the programming language. My focus was on the top-level of languages, and frameworks, just used built-in functions, 3rd party libraries to implement desired features. Sometimes, I didn’t understand how they work, just know how to put them together. The product was still been running but with a lot of struggles in development and when looking back, I am sure that my products weren’t optimized at all. Though, I’ve obtained a lot of experience in web development during that period.
Back to the present, I’ve been looking for a remote job opportunity as a web developer because this is what I’d love to do. I always feel energized and enjoyed when coding, not like being at the 8 to 5 job. So, I decided to educate myself to catch up with the latest technology and more importantly, to strengthen my fundamental knowledge. After looking around from both Coursera and edX, I have chosen to enroll in the CS50 courses. I’ve completed both the courses CS50x and CS50 Web Programming in 4 months, by studying online after working hours. Then, this has been the best decision I’ve ever made. In this article, I would like to write about my joyful experiences with the CS50x — Introduction to Computer Science
The course CS50x has been divided into 10 weeks, in conjunction with 10 domains of programming knowledge and two extras about Security and Artificial Intelligence. You don’t need to follow exactly that timeline but by your self-pace. The structure is simple, each week, you will have a video lecture (there are notes, source codes … comes along) then there could be a lab (a problem but with a guided solution at the end) and there are problem sets with detailed instructions yet without a solution. You can reach for support by social platforms such as Slack, Discord, Linkedin, Facebook … My favorite ones are Discord and Reddit. The students are equipped with web IDE, included many built-in features. You may want to set up your private development environment, and the staff has provided all necessary packages. I usually prefer to set up my own, but in this case, the web IDE is surprisingly convenient, particularly when coding C language. All of these toolsets work excellently, to support students to check, submit problem sets.
The content of each week is incredible. It often took about 2 and a half hours to complete. To me, the content in each lecture is overwhelming, though it’s not so difficult to digest. Each one of them could be taught as an individual course. Other than that, there are short videos, which I strongly recommend, to explain complex topics such as pointers in C. Every topic has been covered with theory, concepts, visualizations, then practical examples, and extensive explanations. And when all of these materials have been taught by professor David Malan, it became some kind of art.
Professor David J Malan is the crucial element of this course. I have never imagined how a course could be like an art performance, as David has performed through the course. He creatively produced visualized materials to explain complex concepts such as stack, heap, and pointers. I’ve read them previously, but still feel vague, until I watched his lectures. All of them have been comprehended week by week. You must watch his video lectures to see how much energy he puts into this course. I have no words to express my appreciation for his dedication.
The Problem Sets
Almost every week, students got problem sets to solve, and it’s stated that “If you submit and receive a score of at least 70% on each of this course’s problem sets, labs, and final project, you will be eligible for a free CS50 Certificate”. Personally, each problem set is really interesting, like a fascinating challenge than homework (which I usually felt uncomfortable in high school). I’ve put a lot of effort and attention to complete all of them, especially the Tideman. Combined with the lectures, you will surely grasp the new knowledge. The most engaging one is the Fiftyville, which I just want another one to try (actually found one here).
Vocabulary Builder for CS50x
Expense Tracker for CS50 Web Programming
Originally published at The Techika — My personal Blog.