I have been using Teach Yourself CS as a self-study reference from the makers of the Lambda School. The page transparently summarizes its goals and intended users (i.e. bootcamp grads), and it has been extremely helpful suggesting a general framework for studying.
I do not have a CS degree; I never really played with computers as a kid; I never was the “take it apart and put it back together” person; never knew any programmers growing up or in school. I was scrappy enough to figure out how to make and deploy websites and mobile apps, and that passion has snowballed over the last two years. I ended up doing Hack Reactor after feeling overwhelmed by all of the engineering lingo and syntax on the internet. Front-end dev is very limiting, so I focused on backend, ML and devops technologies after leaving HR. Again, it is pretty tough to know where to start with so many resources and things to learn. Random medium articles often focus on surface level details of new and fleeting technologies, while textbooks seemed like a deluge of details without context. Despite thousands of hours of self-study over a couple years, I never had a holistic confidence in the basics.
To give a quick summary, I worked through the computer architecture and operating systems portions of the site. I like the Berkeley resources so far, although I wish most of the exercises weren’t 10-30 hour group projects. I think doing more non-trivial exercises would have been valuable, but my personal goal is to have a holistic conceptual sense of computer science - the common syntax, heuristics, history, areas of experties, and how the progression of different research fields intersected with society to produce the products that we see and use everyday. Reaching the point where I can understand research papers in the different fields has been valuable for me. My real goal is founding a techincally complex company, and I still have a ways to go in that mission.
If the homework links are IP blocked on a course syllabus, you can usually find the code and prompts with a quick google search for students who forked the code. You can checkout the earliest version from GitHub if you want.
I appreciate textbooks more when following a lecture. The lecture helps give a human context to the material, and makes digging into the books to understand the details more engaging when you don’t understand a lecture topic (OSTEP is a good example).
I don’t waste time on things I already understand. There are so many areas to cover that I like to focus on breadth over depth for areas that are not a key interest of mine. I save blog posts that can act as easy refreshers for the future, but I don’t dwell on them for the content.
I try to do a lecture everyday to maintain consistency. Broad context, syntax and heuristics are the primary reason for introductory courses. Because I have already been using this technology for years (all the while confused by a lack of context), the information mostly fills gaps that I was already self-concious of.
I am currently working through the Berkeley databases course, and I think I am going to take a similar appraoch to exercises as I did previously. I am starting a job at Factual this week, and hopefully Hellerstein’s theory will mesh nicely with the infrastructure I’ll be working on. By Summer I want to finish intro databases and networking.