I like Algorithms by Robert Sedgewick. It's a great book. He also has free online courses based on the books that are of excellent quality: - https://www.coursera.org/learn/algorithms-part1 - https://www.coursera.org/learn/algorithms-part2 There's a website for the book as well, that has code that is well organized and commented. Unfortunately excellent books like "Programming Pearls" have code examples that use weir…
I’ve heard that Part 1 of the algorithms course is sufficient for new grad interviews. Can you verify?
Teach Yourself Computer Science
61–70 of 273 posts
Re: Teach Yourself Computer Science
#62> If you’re a self-taught engineer or bootcamp grad, you owe it to yourself to learn computer science. No, you don't. I know all these topics and I don't recommend anyone working in a corporate environment to learn any of this. It'll likely result in you resenting your job, your peers and the entire software industry. --- I gave my heart to know wisdom, and to know madness and folly: I perceived that this also is vex…
Recommending ignorance while quoting religious text is so over the top that it makes me wonder if you're just trolling.
Re: Teach Yourself Computer Science
#63Most topics of it aren't difficult to understand, but overall it's just a lot of information. If you want to get a comprehensive CS-education, you have to accept that it takes years of studying, learning and practise.
Re: Teach Yourself Computer Science
#64Re: Teach Yourself Computer Science
#65I am planning on returning to university for a CS PhD after discovering that studying this curriculum is consistently the highlight of my day. Studying CS is the most interesting thing I do on a regular basis. I owe my thanks to the authors.
Does anyone taken higher-level courses at a local university in their free time just for the experience and to be surrounded by like-minded individuals while having a professional career?
Re: Teach Yourself Computer Science
#66Has anyone here learned a subject by going through one of these "teach yourself" lists? I've learned most of what I know about computers on my own, but it wasn't from following a list of textbooks. And when I've tried to follow a course like this for other subjects, despite my initial interest, I've found myself unable to make it through more than a couple chapters of the first textbook before running out of steam. B…
When I started learning, the recommended textbook was Distributed systems: Principles and Paradigms (the new recommendation is Designing Data-Intensive Applications) and the recommended course was MIT 6.824.
6.824 is the first online course that I have completed fully and it was well worth it. I read, took notes, and summarized all required course readings (around 20 papers) and completed the labs, which involved creating a raft-based key-value store. The labs were especially useful because they forced me to really understand the details of the topics I had learned (e.g., MapReduce, Raft, Raft’s log compaction) in order for my code to pass all the tests.
I’m very happy with the results of following the course and I now plan to put the same amount of effort into other topics.
Re: Teach Yourself Computer Science
#67how 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.
Re: Teach Yourself Computer Science
#68Main updates as of May 2020: Computer Architecture: added Computer Systems: A Programmer's Perspective as first recommendation over nand2tetris. Compilers: Crafting Interpreters added as first recommendation over dragon book. Distributed Systems: added Designing Data-Intensive Applications as first recommendation over Distributed Systems . Online availability of some video lectures has changed as well.
Re: Teach Yourself Computer Science
#69I am thinking of the same. Even though I have a Bachelor of Science (BSc) in Computer Science, it has been 14 years that I actually used any of it. I regret it sometimes since I know what it is to know how things work underneath the high level languages (PHP, JavaScript and Python for me).
Lately I have started taking more interest in CS and I think part of the reason is Rust. You could be learning Go, Swift or any similar language and come to similar feelings.
In Python (my language of choice for the last 7 years along with JavaScript) I do not really have to care about pointers, stack or heap allocation, how memory gets create or cleaned, etc. I also do not need to know if there is a virtual machine, a garbage collector, etc. Data types and how they are handled are somewhat important but I rarely get slapped by the Python interpreter for mistakes.
To me it seems that a lot of developers are choosing to go into more typed and lower level (closer to metal) languages. My gut feeling says this is happening because we can not crank up core speed from 2GHz to 3Ghz to 4Ghz and beyond as easily as we did pre-2Ghz era. Yes we hit ceilings of per-core power. But we have more users than ever before and the world seems to be eager to bring computing to even larger audiences.
All this is great, but it means developers need more refined and powerful set of tools that can work in low-power environments, boot up fast and deliver more computing throughput. The high levels of abstractions that most of us have enjoyed will stay but there will be new territories where you want to push code that is way, way more efficient. If we want to work with them, we need to know not only how to push a Template into an `` but about the metal that is underneath. From how browsers work internally to how networks work, how processes work or communicate, how memory is allocated and so forth.
So this is a choice we have to make individually. I choose to learn and I am going with Rust and spending time to learn CS again. It is a slow process though, I have full time commitment to my product as a solo founder. Cheers!
Re: Teach Yourself Computer Science
#70> If you’re a self-taught engineer or bootcamp grad, you owe it to yourself to learn computer science. No, you don't. I know all these topics and I don't recommend anyone working in a corporate environment to learn any of this. It'll likely result in you resenting your job, your peers and the entire software industry. --- I gave my heart to know wisdom, and to know madness and folly: I perceived that this also is vex…