I finished the 2017 CS50x course! Although yet to receive my certificate, everything has been handed over with straight 100% grades all the way through.
What has it been like? It has been tough. At times, really tough. The most frustrating bits are working on something… And fiddling with a few lines of code to get the right output for occasionally, hours at a time.
Picture this; you notice the time and realise you have work the next day. Shut down the PC… laying in bed and all you can think of is this final puzzle peice. The greatest error you can make is think of a possible solution… sometimes THE solution… and realise you have 4:30 hours till the alarm goes off. The shear panic of forgetting your idea whilst you sleep makes me want to jump up out of bed and tinker some more… but alas… exhaustion sets in.
What was your most favourite problem? To be honest, I loved the theory, execution and outcome to Recover. Yes, it was one of those problems that had me lying in bed pondering, but the moment of changing something, recompiling and running it with the perfect outcome, was a real eurika moment!
The Recover problem was to extract images from a “broken” SD card, teaching the concept of how data is stored on disk, the makeup and structure of a BMP image in order to identify and build the files anew. It really was an insight into lower level programming concepts.
What did you know before the course? Before CS50, I taught myself PHP, dabbled with HTML, CSS and MySQL, and prodded around C#. Looking back after taking the course however, I realise that I had no real understanding of objects, pointers or even loops to name a few. Books are great if you already know the fundamentals, but there aren’t many books that can vigeriously teach you a concept and apply it to a real world use.
What have you taken away from CS50? CS50 explained in depth, with enough room to let me explore and fill in the gaps. The lecture alone will not answer every question or exception case I thought of, but continued to remind me to refer to available resources to make those connections, and find the answers. I found myself writing little snippets for almost every new concept and this concreted my understanding.
I am now confident when tackling a new project or problem, even though I might not have the knowledge to hand.