This book has great explanations and exercises for everything you could want to learn from the basics of sorting and algorithmic design and analysis, to graph algorithms, linear programming, and dynamic programming.
It lacks some degree of depth on more advanced topics, but if you work your way through it and actually implement what you read and do the exercises, you will be more than well enough equipped to take on just about any problem.
The key is going to be to actually implement what you read/learn, I think it might take you a little more time than watching an online course, but in the long run it will give you a much deeper knowledge of the material.
I would recommend The algorithm design manual for more practical purposes.
I don't think so, I've worked through it and I didn't find it that difficult/academic. But I actually don't read a lot of computer science books / textbooks so I don't really have much to compare it to other than mathematical texts which I do read a lot of.
If you don't like proofs or math then its probably not the best text to work through, on the other hand, if you like rigorously understanding the material I would highly recommend it.
Either way, from what I remember it gives psuedocode for just about everything and has lots of graphs and pictures for elucidating the material, so you could probably just skip the math if you have an allergy to corrolaries, theorems, and proofs. Admittedly, that extra insight is probably a lot of the reason I liked it so much.
This same course is available on Coursera as well.
There’s also the book “Algorithms Illuminated: Part 1: The Basics” by Tim Roughgarden
I spent a hundred hours going through the various tests and it showed the power of functional programming / recursion. The questions that took me much longer than average were the ones where I had a bug and had to track it down. The recursive problems didn't suffer from this, ie I would get the solution pretty much correct first time. This could just have been the questions / my programming style but I found it eye opening.
 : http://letstalkalgorithms.com/
And for practice, Google Code Jam past problems are quite challenging ;)
Disclosure: my company made this :)
Data Structure: https://en.wikipedia.org/wiki/Data_structure
Big O notation:https://en.wikipedia.org/wiki/Big_O_notation
Big-O Cheatsheet: http://bigocheatsheet.com
Coding Interview University > Data Structures: https://github.com/jwasham/coding-interview-university/blob/...
OSSU: Open Source Society University > Core CS > Core Theory > "Algorithms: Design and Analysis, Part I" [&2] https://github.com/ossu/computer-science/blob/master/README....
"Algorithms, 4th Edition" (2011; Sedgewick, Wayne): https://algs4.cs.princeton.edu/
Complexity Zoo > Petting Zoo (P, NP,): https://complexityzoo.uwaterloo.ca/Petting_Zoo
While perusing awesome-awesomeness , I found awesome-algorithms  , algovis , and awesome-big-o .