Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For Algorithms, I know the amount of materials available online can be overwhelming, so here's an alternative: get a copy of "Algorithms, 4th Edition" [1] from Sedgewick and Wayne, and work through it cover to cover, ignoring any other resources.

This book has very little in the way of prerequisites, and it covers a lot of fundamental algorithms and a little bit of Math, but it is a lot more accessible and didactic than, say, the Cormen book. I don't think you need any other resource for studying the book (videos, forums, etc.) other than maybe the website for convenient access to the source code (and maybe some other Java reference, although you don't need deep Java knowledge to understand the code).

Note: I'm plenty biased for this resource... I don't know why, but I find the implementations so elegant an easy to follow, even though the source code is Java, a language I admit sometimes can look anything but elegant (in its production form with all those imports and redundant type signatures :-). Many algorithms are implemented using data structures introduced in previous chapters, so it makes sense to read it cover to cover.

For Computer Architecture, Nand2Tetris [2] is another resource that comes up often and for good reason. I only worked through half of this book but I really like it too and have it on my back burner to complete the second half of it: first part is about implementing a computer from the ground up (nand gates being the "atoms"); second part is about implementing a parser/compiler for a higher level language targeting the same computer.

1: https://algs4.cs.princeton.edu/

2: https://www.nand2tetris.org/



I did a similar thing with "The Algorithm Design Manual" by Skiena.

I really do not recommend videos/online classes for algorithms. The primary reason is that if you are learning them for the first time, there is a lot of information to get through and using the book format will force you to slow down and ensure you are learning things at your own pace.

I also highly recommend "Grokking Algorithms" as a easy primer. It seems a little "basic", but it really is a great way to quickly pick up the basics of algorithms, an a great refresher. I used it in parallel to TADM and helped me get unstuck a quite a few times.

http://www.algorist.com/

https://www.manning.com/books/grokking-algorithms


Second the recommendation to read Algorithms over CLRS; it’s significantly nicer in part because it uses actual code with good variable names instead of its own strange psuedocode dialect.


I didn't find the pseudocode to be a hurdle in CLRS. In fact, it was pretty useful to see some pseudocode shown in practice. What stung me in the book was how abstract it could get. It was clear that some of the authors wrote in a more approachable way than others when explaining the material.

Its also focused on how to solve problems than Sedgwick. Algorithms explains some elementary algorithms that noone is ever going to code themselves. CLRS teaches you what to look for in algorithms for solving particular problems.


I actually liked their psuedocode. It was always easy to translate to whatever language I was working with (the opposite can be said about TAoCP assembler).

Hence while it may be nice to see the Java code, I personally prefer pseudocode.


udi-manber’s “introduction to algorithms: a creative approach ” is one of my favorites (fwiw)


"Algorithms, 4th Edition" is demonstrated using Java. They make use of a graphical library that helps show different runtimes visually. I ported that library from Java Swing/AWT to Ruby (TK) if you'd like to go through the book using ruby instead of Java. Looking at the TK code you could probably also port it to Python pretty easily.

https://github.com/gregors/standard_draw_tk


I think I might go with this recommendation, maybe watch the CS61B videos as and when necessary.

I did the intro course from the sedgewick and wayne from coursera along with their book and loved it. Would recommend it to anyone who likes a decent challenge while learning. The book is pretty dense.


I would second the Coursera course(s), which is one of the best MOOCs I've ever taken (Algorithms 1 & 2 from Princeton).

Watch the videos, then read the relevant section of the text book, and don't miss the assignments which were fantastic ways to learn about the nuances of writing efficient algorithms and data structures.

If only every programming MOOC put that much effort into their autograders...


Just got my Raspberry Pi in the mail and I’ve been looking for a project-oriented way to learn computer architecture... looks like Nand2Tetris is going to be what I do on the pi.

Thank you!!!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: