One thing I'm always amazed by when casually talking to people about what I do is how they don't think they can do it. Many people think that software engineering and programming are some inscrutable thing. Sometimes I try to tell them that it is nothing special, it doesn't take a mega genius or math expert to do it. That the most important skill is just being able to solve real problems, soft skills and breaking pro…
> the most important skill is just being able to solve real problems, soft skills and breaking problems into parts. As well as the ability to self learn and research. Seeing a very non-technical friend of mine being completely immersed in games like "Factorio" and "Satisfactory" where the entire game is essentially just putting constantly more complex and valuable resources together in automated ways is fascinating t…
Teach Yourself Computer Science
191–200 of 273 posts
Re: Teach Yourself Computer Science
#192I would suggest Essentials of Programming Languages by Daniel P. Friedman and Mitchell Wand instead of (or even better, in addition to) Crafting Interpreters. The former is about languages, the latter compilers (or rather interpreters). They are complementary.
A couple of things I would add:
Logic Rather than saying it is "applied math", I prefer to view programming as "applied formal logic". Everything from fancy type systems to Fowler's refactoring to Dijkstra's "weakest precondition" semantics for normal human being programming languages are simple applications of formal logic. Logic for Computer Science by Steve Reeves and Mike Clarke seems a good choice.
Automata theory Ok, if you're going this far, you might as well go all the way and learn what all that "finite state machine", "universal Turing machine", and "incomputablity" crapola is about. Introduction to the Theory of Computation by Michael Sipser is pretty good.
Old-school Artifical Intelligence Games. Plus, what can I say but, it'll come back again. Artificial Intelligence: A Modern Approach by Russell and Norvig. (Oh, there it is down towards the bottom.)
Sorry, I don't have video suggestions. And yeah, some of those aren't free. But they're not horribly expensive either. Maybe there are alternatives.
"Still too much? If the idea of self-studying 9 topics over multiple years feels overwhelming..."
I'd have some snarky comment here, but I'm bitter.
Re: Teach Yourself Computer Science
#193Earlier quoted context omitted.
I just want to feed my family... I’ll worry about enlightenment later.
Having an actually solid foundation when you're being paid 300K to be expert isn't "enlightenment". It's "appropriately qualified". Hacking the hiring process has a good effort vs reward ratio, but it's also high risk. The risk is that obvious gaps in the candidate's background surface after starting the position. Which usually doesn't turn out well: best case career stagnates and worst case the candidate ends up on…
I understand your concern about not gaining implicit knowledge while surrounded by peers, but I’ve gained “the ability to think” through my other course of study, and your concerns don’t seem to be attached to a solution. Rather, it seems like a desperate attempt to gatekeep over an increasingly egalitarian field. And sorry, but there isn’t much communication to be learned among CS undergrads.
The knowledge I lack on the job will be taught as I’m exposed to my shortcomings, as is the case with most jobs.
In addition, my school’s CS department was lacking, so most of it was poorly taught, and I relied on self-teaching regardless. Once I get through hiring season, I’ll worry about covering the remaining material before I begin work.
Re: Teach Yourself Computer Science
#194Earlier quoted context omitted.
Having an actually solid foundation when you're being paid 300K to be expert isn't "enlightenment". It's "appropriately qualified". Hacking the hiring process has a good effort vs reward ratio, but it's also high risk. The risk is that obvious gaps in the candidate's background surface after starting the position. Which usually doesn't turn out well: best case career stagnates and worst case the candidate ends up on…
I really agree with this. I didn't take the distributed systems course when I was at university, but later I still managed to work at a few FAANGs. Flicking through the material in the MIT 6.824 course, I really wish I learnt this before I needed it, rather than scrambling to learn it piecemeal as things came up. I would've been promoted faster, and things would've been less stressful. It is possible to learn this on…
Re: Teach Yourself Computer Science
#195Introduction to Automata Theory, Languages, and Computation, 2nd Ed.
https://www.amazon.co.uk/Introduction-Automata-Theory-Langua...
Which is basically all the goodness in Structure and Interpretation... and any book on compilers and interpreters. Basically, though I don't reckon that any modern courses teach from Hopcroft & Ullman, it's a major textbook in the field (unfortunately the 2nd ed is easier to find but the 1st has the works).
Another foundational text is Andrew Tennebaum's book on Operating Systems:
Operating Systems Design and Implementation
https://www.amazon.co.uk/Operating-Systems-Implementation-Pr...
To be honest I don't how it compares with the book proposed in the article, since I haven't read that book.
Finally, two personal recommendations for anyone interested in AI (as a study of advanced CS concepts and not just as a way to make a quick buck with a shallow understanding of a few machine learning tutorials):
Artificial Intelligence: A modern approach (Russel & Norvig)
And the free pdf of AI Algorithms, Data Structures, and Idioms in Prolog, Lisp, and Java:
https://www.cs.fsu.edu/~cap5605/Luger_Supplementary_Text.pdf
Which doubles as a good textbook for programming languages in general.
Re: Teach Yourself Computer Science
#196how much of this curriculum is necessary for a FAANG job? I’d love to go through all of them, but I’m constrained with work as well, so I’ll have to prioritize.
Honestly, start with web or mobile development and start working on projects. Start with the fundamentals and go from there. CS theory is great but it’s not gonna pay the bills.
Re: Teach Yourself Computer Science
#197One thing I'm always amazed by when casually talking to people about what I do is how they don't think they can do it. Many people think that software engineering and programming are some inscrutable thing. Sometimes I try to tell them that it is nothing special, it doesn't take a mega genius or math expert to do it. That the most important skill is just being able to solve real problems, soft skills and breaking pro…
> the most important skill is just being able to solve real problems, soft skills and breaking problems into parts. As well as the ability to self learn and research. Seeing a very non-technical friend of mine being completely immersed in games like "Factorio" and "Satisfactory" where the entire game is essentially just putting constantly more complex and valuable resources together in automated ways is fascinating t…
One reason why I can't really get into Factorio. It's too much like work.
The funny thing is I do code at home, for fun, in my free time- or I used to when I had a clear line demarcating my "free time" from work time (I do AI research and I mostly work from home, so most of the time I'm working on something that I really have to work on). But Factorio is just ... too much like work.
... dah, I can't explain it :)
Re: Teach Yourself Computer Science
#198See also: 2018 https://news.ycombinator.com/item?id=17581589 2017 https://news.ycombinator.com/item?id=13862284
not op, but i think it's good enough to warrant reposts so new people can find it.
I've been looking for a brief, unambiguous phrase that can point people to related threads without having to spell all this out every time. A reader suggested "See also" which seemed like it would hit the spot: https://news.ycombinator.com/item?id=23150065. I guess not!
Re: Teach Yourself Computer Science
#199At 200 hours per subject, it would take 2 years to complete if studying part-time (20hr/week) during only the working weeks of the year (92 weeks). If you're uncomfortable working+studying 60-70hrs a week, it would probably take 4 years. Are there blog posts around where people share their experience of undertaking and completely this endeavour?
Re: Teach Yourself Computer Science
#200Earlier quoted context omitted.
I wonder if there's any TeachYourself Medicine resources?
That would be very dangerous, albeit useful. Making a diagnosis and giving a therapy have different consequences than programming SW and executing code
Feel the power of the sarcasm side...