I recently finished Flatiron School’s bootcamp in data science, and thinking back on where I was in early 2020, it’s amazing how much stuff has been crammed into my head in the space of a year. Web scraping, data visualization, A/B testing, linear algebra, vector calculus, regression, SVMs, random forests, XGBoost, Docker, AWS, Tableau, and so many different ways that neural networks can be put together. It has been an education with both breadth and depth within the field of data science.
There’s kind of a caveat there: as much as I’ve learned about data science in a year of intense study, my impression of what I know now at the beginning of 2021 is still how much I don’t know. Yes, I’ve learned a lot in data science, and yes, I’ve learned at least some of it quite deeply, but there’s still so much I don’t know about the field that the whole of AI and machine learning is predicated on: computer science fundamentals.
Creating virtual environments in Conda is a fairly regular habit, but I think I lack a deep understanding of what’s happening when I do, moreso with Docker images. And truly fundamental concepts like data structures (linked lists, tries?), algorithms, operating systems, computer networking, distributed systems––I know those in name only, and I don’t think I’m the only one to finish a bootcamp, even one in software engineering, and feel that way.
That’s not to rag on bootcamps. I think they’re quite good at what they aim to do, which is get you up to speed, fast, on all the most cutting edge and relevant technology. Often, that comes at the cost of neglecting those deeply-rooted core concepts. This position, of working closely to computer science and programming without grasping some of these deeper fundamental concepts, isn’t unique to bootcamp grads either. Anyone who’s transitioned into a technical position has likely felt at some point the pressure of all the things he or she doesn’t know (and really, who doesn’t feel that way in any new job?).
While one solution is more education, whether a new bachelor’s or master’s degree, another possible solution is curated resources that mimic an undergraduate education in computer science. They’re free, they’re self-paced, they have online communities for support, and the reading and lecture material is a lot of the same stuff you would get at a highly regarded four-year university. Only have 5 hours a week? Fine. Only need to know more about operating systems or networks? See below. These are two of the best resources I’ve found, boons for anyone looking to learn fundamental computer science concepts, whether that be a bootcamp grad, career-changer, or just someone wanting to brush up on previously learned core concepts.
Open Source Society University (OSSU)
Here’s the link: https://github.com/ossu/computer-science
I think between the two, OSSU has the more active community, with, from what I can tell, a fairly active Discord. It also prefers online courses (mainly composed of video lectures) offered through edX, Coursera, etc., with options for certification for most of the courses you take. It also describes a bit more robustly some advanced elective options in data science, systems, and theory than the next option, but the core curriculum close matches the next resource, Teach Yourself Computer Science.
Teach Yourself Computer Science (TYCS)
Here’s the link: https://teachyourselfcs.com/
The emphasis of this resources is decidedly on reading, primarily serving as a reference to good books on all the core concepts. Unlike OSSU’s curriculum, it lacks specialized “elective” material, but most of the resources reference only a portion of the given (textual) resource: you could easily take a deeper dive just by reading more of the prescribed book on any given topic. That said, the focus seems to be on the truly core concepts in computer science. You won’t find any recommendations for resources on data science, for example.
At the end of the day, they’re both great resources. The core curricula are quite similar, but each has a slightly different emphasis. If you want to mimic a bit the school environment––lectures, a community of fellow learners, elective material––OSSU is probably a better fit for you; if you want to power through some reading material, TYCS is likely a better fit.