10 ms·
For me, the thing that really made the lightbulb go on was learning OCaml. Working with complex data structures is where ML really excels, and it dispenses with
by silentbicycle 16y ago
For me, the thing that really made the lightbulb go on was learning OCaml. Working with complex data structures is where ML really excels, and it dispenses with many superfluous details that appear when studying algorithms in C/Java/etc. Working through the exercises in chapters 2-4 of this book (http://caml.inria.fr/pub/docs/oreilly-book/ http://caml.inria.fr/pub/docs/oreilly-book/) should give you a solid intuition for algorithmic performance, as well as an excellent notation. (Though as OCaml books go, http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf is probably better overall.)
As a reference, volume 3 of Knuth's _Art of Computer Programming_ is quite good. I know a lot of people just namedrop it and haven't read it, but it really is. Volume 3 focuses on searching and sorting algorithms (perhaps the most practical volume). It takes a bit of mathematical sophistication to follow, but you'll need that for algorithmic analysis anyway.