Bradfield founder here: thanks for the recommendation but it's really not true that "most of [the course material] comes from CS:APP". It's a great book—which is why I recommend it so strongly in teachyourselfcs.com—but we use it only as a supplementary resource, for one of the eight courses we teach.
As the author of Teach Yourself CS I would definitely suggest against trying to fit this in a year! Maybe aim for CS:APP and 1-2 others, and if you have time for more that's a bonus. Most of these are books to work through, not "read".
This guide has been posted to HN a number of times by others, typically with a very positive response.
I recently made a major update, in particular: strongly recommending _Computer Systems: A Programmer's Perspective_ and _Designing Data-Intensive Applications_; recommending _Crafting Interpreters_ over the Dragon Book for those new to compilers; updating a number of broken links (due to shutdown of Lagunita); and, adding a few secondary recommendations
Hi there, I'm the author. Yes this list precisely constitutes the topics in computer science on which I believe a software engineer with an informal education should focus. It's based on my experience of having taught computer science to over 1,000 junior to mid-level engineers, mostly bootcamp grads, in person in small classes over the last 5 years.
I've been meaning to update it slightly, to recommend _Computer Systems: A Programmer's Perspective_ over P&H (although P&H is still excellent) as well as Martin Kleppmann's book _Designing Data-Intensive Applications_ for distributed systems.
Congratulations, this is great! I'm glad you'll be reaching an underserved group.
I hope, though, that you'll be honest with your students about what your program will deliver.[1] While it's currently still possible for many non-programmers to achieve upward mobility just by learning to code, there's a huge skill gap between those who can cobble together a few libraries to make a website, and those who understand theory/systems well enough to build something novel.
While compensation levels for both groups are currently still comparable, the steadily increasing supply of bootcamp grads and self-taught engineers could result in a pronounced bimodal distribution in a matter of years. Some subset of folk will have the motivation and resources to make the jump;[2] others may end up in end-user programming roles that pay poorly or aren't fulfilling.
Somebody entering your program should have a realistic view of what it takes to reach the parts of our industry that they hope to find themselves in. If they know that Modern Labor is step 0, and see themselves on a long road of learning and growth, they're likely to do very well!
[1] I wouldn't have worried about this, except that I've seen some bootcamps tell their students that they should consider themselves "senior" upon graduation, and that their skills are comparable or superior to graduates of top computer science programs.
[2] I run https://bradfieldcs.com and maintain https://teachyourselfcs.com, both of which aim to help such folk make the jump. As much as I try, many people aren't interested or driven enough to start, let alone persist for the years that it takes.
Berkeley's CS 162 is great, and recordings are available on internet archive. There are some decent undergraduate textbooks these days too: OSTEP is particularly accessible and free online, and the Tom Anderson _Operating Systems: Principles and Practice_ book is solid.
I teach a course on database systems, including one class on distributed databases (like Dynamo and Spanner) and another on dataflow engines (like MapReduce/Hadoop and Spark).
Students seem to find the Dynamo paper to be the single most enlightening resource. It does a great job of explaining Amazon's use case and how the solution fits the problem. I also reference the relevant Red Book chapter and some students value that context.
It's worth noting that students are very comfortable with relational DBMSs by this point, both in theory and in practice. It quickly becomes clear to them that NoSQL is better called "no transactions", as they know the costs and benefits of various isolation levels in a traditional RDBMS. If you don't yet have an undergraduate-level background in database systems I'd encourage you to seek that out either first or at least along the way to understanding NoSQL systems. My recommendations for how to do this as a self-learner are up on https://teachyourselfcs.com.
Hey there! We've been doing this at Bradfield for a couple of years, and do get quite a few bootcamp grads (maybe 100 to date) typically 1-3 years into their careers. Which bootcamp did you attend? Ask around there and I'm sure somebody has good things to say about us :)
Hi! I'm one of the instructors at Bradfield: https://bradfieldcs.com . We teach computer science to strong programmers, typically those who were self taught, attended bootcamps or weren't quite satisfied with their conventional CS experience.
We teach in small classes, strictly in person in SF. I know this sucks for folk (like OP) who are outside SF, but honestly you can't teach this stuff to a high enough standard remotely. We do get plenty of interstate and international students who visit for a course or two.
We also maintain a self-teaching guide https://teachyourselfcs.com for those who don't need the full classroom experience.
Hi! I co-wrote the first one, and it is definitely not intended to be a CS canon. Those books are our suggested resources for folk teaching themselves computer science, and were evaluated on that basis alone. We included not-great books where they're still the best we've found for a particular topic. Equally we excluded dozens of amazing books that are outside the scope of the resource.
Anybody who deeply scrutinizes the FDA will find opportunities for reform. For instance, when the economists Daniel B. Klein and Alex Tabarrok applied their scrutiny, the result was http://www.fdareview.org/
What is surprising and exciting about the possibility of Balaji's appointment is not that he has identified opportunities for reform, it is that he may be appointed despite the fact that reform is his primary motivation!
He has no political motive, no personal motive, he does not "hate" the FDA (he is not the kind of person to be driven by hate)... he simply sees the FDA's mandate as an incredibly important one which it could do a better job of fulfilling. This should inspire optimism.
This is the most appealing thing about BJJ in my opinion. Not only does full-intensity training entail a better workout, one also improves more rapidly due to the constant realistic feedback. BJJ is to The Little Schemer as karate is to Learn Python The Hard Way.