Live data from Hacker News

Teach Yourself Computer Science

teachyourselfcs.com

61–70 of 273 posts

Re: Teach Yourself Computer Science

#61

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?

I got an interview that involved part 2 (substring search), which I solved using KMP.

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…

That's just FUD.

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

#63
I like to compare CS to medicine.

Most 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

#65
post #16

I 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.

I would like to add this related question to the discussion: what resources/courses/learning techniques do you and others like you who have had an undergraduate Computer Science degree for a few years and are interested in academia but not sure what steps to take next use to continue your study? At some point I would also like to return for a PhD or Master's degree and I would like to keep myself mentally trained, but there are so few resources for higher-level study. All of the online resources I've tried are almost exclusively introductory and don't provide the challenge I crave.

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

#66
post #32

Has 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…

I just finished the distributed systems section of teachyourselfcs and I now have a solid understanding of a lot of concepts I previously only shallowly understood.

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

#67

how 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.

The FAANG interview process is pretty standardized, if you're pressed on time I suggest you learn and master just 2 things: data structures and system design.

Re: Teach Yourself Computer Science

#68
post #10

Main 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.

CS:APP is recommendation over Computer organization and design.

Re: Teach Yourself Computer Science

#69
Are you thinking or debating if getting a deeper understanding of CS will help you or your career?

I 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…

You made a contradiction and then gave an irrelevant reason behind.
Post reply on HN