4 ms·
FWIW, when I was trying to rid myself of similar insecurities, I went through a bunch of courses like this one, but none of them worked out for me. The challen
by dilippkumar 7y ago
FWIW, when I was trying to rid myself of similar insecurities, I went through a bunch of courses like this one, but none of them worked out for me.
The challenge was that the textbooks and material that is popular among University CS courses leave a lot of unanswered questions that I couldn't get over. For example, when I came to hash tables while studying data structures, I couldn't figure out how the hashing functions did their magic. Every book or online lecture I came across showed how to use a generic hashing function and moved on to dealing with hash conflicts. I couldn't move on because I kept coming back to questions like "ok, but why this hashing function? If I change my data a little bit, is this still the right hashing function to use? How can I tell?"
Somehow, people who had formal education managed to sail past these questions. I suspect that having someone to answer these questions when they came up played a crucial role in them understanding the material.
My point is, some of these materials are almost deliberately designed to be consumed with an instructor who can answer questions. Especially for the difficult courses.
In the end, when I was teaching myself the basics, I had to go hardcore and pick up TAOCP to keep up. TAOCP has a reputation for being a very dense reference book and being unsuitable for self study - but I found the opposite to be true. Prof. Knuth painstakingly covers every minor detail leaving nothing unaddressed. (His treatment on hash tables has several pages on hashing functions that gave me a clear understanding of how things work). I would recommend following that path if you are trying to study the basics without formal instruction. It's a little harder, but you are more likely to end up successfully digesting the fundamentals and move on to more advanced topics.
Today, I have fully rod myself of insecurities, and I have developed a habit of going to the most comprehensive treatment of a topic if I'm trying to teach myself something difficult. For easy subjects, textbooks popular in Universities is usually good enough. For difficult stuff, I prefer going hardcore.
Be aware of textbooks designed to work with formal instruction.
- eru 7y agoSounds like you would make a good mathematician. I had a very similar reaction to the much vaunted 'Algorithm Design Manual'. It was all fluff with not much substance. I found http://jeffe.cs.illinois.edu/teaching/algorithms/ http://jeffe.cs.illinois.edu/teaching/algorithms/ pretty good for an overview over Algorithms. If you like something in a similar vein to TAOCP, the book 'Combinatorial Optimization' by Alexander Schrijver fits the bill. It teaches you everything you ever wanted to know and then some on the mathematics behind problems in P. Just like TAOCP it is also a detailed overview over known results. See https://homepages.cwi.nl/~lex/files/book.pdf https://homepages.cwi.nl/~lex/files/book.pdf for the list of contents.
- epelesis 7y agoI'm taking Jeff's 473 class right now and if you like his writing style, all of his lectures for both algorithms classes he teaches are online as videos - it can be a good companion to the textbook if you want worked examples. [my video] links should be raw MP4's that are not password protected. 374 (Introduction to Algorithms Videos): https://courses.engr.illinois.edu/cs374/fa2019/A/schedule.html https://courses.engr.illinois.edu/cs374/fa2019/A/schedule.ht... 473 (Algorithms Videos): https://courses.engr.illinois.edu/cs473/sp2020/lectures.html https://courses.engr.illinois.edu/cs473/sp2020/lectures.html
- eru 7y agoThanks! I don't really like videos for math-y content, but I have recommended his books to people who will definitely appreciate the videos. Btw, I tried to reach out to Jeff for a linear time solution to an exercise in the chapter on matroids in section 8.2. It's about 'Scheduling with Deadlines', and his best solution is O(n log n). But alas, I never got a reply.
- xmprt 7y agoI haven't ever had to worry about how hashing functions work beyond knowing a few of the basic qualities of a good hashing function. I guess most students were like me in that they don't worry about those details because even though you call them fundamental, I think most programmers get by perfectly fine without knowing how a hash tables works as long as they know how and when to use one.
- commandlinefan 7y agoI did have a formal CS education, and I still got a lot out of TAOCP even years later. You’re right that it really covers details that you just can’t find anywhere else, and every single exercise has worked-out solutions in the back, unlike a lot of the pretentious textbooks out there.
- whycombagator 7y agoFor those interested in hash tables I found the Hash Tables section of Crafting Interpreters pretty good[0]. It has a section on hashing, which supplemented with this SE post[1], I've found to be comprehensive enough. Of course, if you aren't familar with binary/basic bit manipulation, you may still find the internals of the hashing functions mentioned slightly confusing. [0] https://craftinginterpreters.com/hash-tables.html https://craftinginterpreters.com/hash-tables.html [1] https://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed https://softwareengineering.stackexchange.com/questions/4955...