CS50: Week -1.
Published 21 June 2020 at Yours, Kewbish. Also published on Dev.to. 1,142 words. Subscribe via RSS.
This post is unlisted and has been archived. This doesn't represent my best work; please check out the posts listed here instead.
Introduction
What’s this secret thing you keep mentioning in your blog posts, you ask. Well… I’m doing CS50x. Yes, the infamous course that every ‘phul istack’ developer and their friends have done. I’m not entirely sure why I decided that doing this course was a good idea, especially trying to speedrun it in 10 weeks instead of 12. But hey, I’d like to get more acquainted with the mysterious things known as algorithms, and I found some esteemed classmates to speedrun with me.
CS50
CS50 is Harvard (and Yale)’s introductory course in computer science. Over 12 weeks, it covers Scratch, C, Python, SQL, and four tracks of real-life development experience. Along the way, students pick up algorithms, data structures, and time complexity - among other programming concepts. It’s famous for being a great starter for non-programmers, and a rite of passage, almost, for other devs.
I definitely need to brush up on my nearly nonexistent knowledge of algorithms, and I’ve tried to start with some Khan Academy research. As well, I’d like to investigate C, even if I’m only going to use it for this course. I’ve heard it’ll help build an appreciation for how high-level languages work, and even by just skimming some of the notes and starter videos, I can tell I’ll be wishing for the sweet syntactic sugar that Python provides. I’m also excited to learn more advanced data structures, and algorithms - and I can see the problem sets are going to be a fun time. Most of all, I’m looking forward to the SQL and web part of the course, which is the track I plan on taking. I’ve heard so much about these technologies through dev Reddits and posts, and I’d like to see what all this RDBMS hype is all about.
At the end of the course, it all culminates in the final project. Through dev media, I’ve found many amazing projects, and it’s only now occurred to me that CS50 was a course, not some qualification or technology. The things you learn. I plan to use this final project to build my first proper full stack webapp, or at least, focus on reworking one of my older ones.
My Expectations
I’ve skimmed through the problem sets and a couple paragraphs of the notes for now, and I have a couple of predictions for the course trajectory. First off, I can tell that Week 0 will be tedious torture, having to relearn Scratch, but I think it’ll be relatively easy to debug. Weeks 1 - 3 seem doable with my current skillset and a couple of scrolls through StackOverflow, but I’m sure they’ll still teach me how to use better programming patterns. Weeks 4 - 5 seem like the most difficult, and this corresponds to what I’ve read through Reddit and testimonials. The Speller problem set seems especially scary - though I’m sure I’ll eventually figure it out. Right? Week 6 is when I can finally go back to the beauty of Python, and I expect after implementing algorithms in C, I’ll be able to macgyver a solution. Weeks 7 - end will be mostly new knowledge, but I think that my experience with HTML, CSS, and half-witted Flask attempts will come in handy.
I already have a cadre of classmates that I’ll be working alongside for this journey, but I expect the past posts and resources people have created will be extremely useful. I’ll have to be careful not to try to speedrun too much at a time, and try to sit and absorb the material properly. The data structures that I’ve seen seem extremely useful in my pr0gramming career.
What Else I’ll be Doing
Because it’s almost the last year of speedrun before I enter the big bad world of university1, I’m probably also going to start revising for other topics before I start school. Speedrunning was hard enough before COVID, but with COVID, the amount of class time is greatly reduced, and now we’ll be speedrunning more than ever before. Throughout the summer, I’ll also be revising for:
- Calculus, with an old book that we’ll be using
- Physics, with the help of a well-meaning VSB teacher that unknowingly released a bunch of helpful provincial exams on his Weebly site
- And of course, summer homework, of which I happen to have a decent amount of. This will be fun.
My Workflow
I might write a separate post about this2, but I’ve essentially started trying to utilize Trello and other ‘productivity tools’ more often, because my scatterbrained self cannot figure out how to keep a journal and development workflow together. I have an overview board, with a proper KanBan workflow, as well as some other notes. I’m also experimenting with Zapier and IFTTT to create scheduled cards for recurring events, like my scheduled work sessions for each topic.
Speaking of work sessions, that’s also another part of how I work.3 It’s kind of like pomodoro, but with longer breaks. As everyone says - we need less screen time. Hopefully I’ll be able to reduce the amount of break while maintaining my eye health, but y’know, if not, that’s fine too. I’m trying to find ways to work offscreen, such as writing by hand (what a concept), but that’s a little difficult when all my materials are onscreen and online. Oops.
Conclusion
Consider this CS50 Week -1. I’ll be posting every week with recap thoughts and my review notes, but not my code. I don’t think that’s legal, at least. I suppose this will be using the Feynman technique, and anyhow, you guys can read through my lack of understanding and be amused! That’s something, at least.
Currently
How did I go from 30 to 200 users on diveintoht.ml in one day. Jesus. Dev.to really helped me here - my post got 2500 views, and a bunch of people showed so much support. Apparently, a couple teachers are looking into sharing it with their classes, and people are actually using it now. I managed to make a much bigger impact than I expected, and I guess that’s good! Unfortunately, now I have to actually put time and effort into maintaining, which is a good thing too, I suppose. I have a lot of ideas for content and expanding that I might add to the site, so keep checking back for updates. This will be my project for the summer along with CS50 - can’t wait to obsess over statistics!
Last minute edit - It’s 350 now, why are y’all actually considering this a good resource. Ahh, the pressure-
-
Assuming I get accepted and graduate first. ↩︎
-
I’ve been thinking a lot about productivity lately - I’ve been watching tonnes of Ali Abdaal and Thomas Frank. Mostly because I’ve been having one of those I better not mess this up moments. :existential_crisis: ↩︎
-
This is probably TMI. Whatever. ↩︎