This is one of the best Algorithms books. Additionally, another good one is this: https://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321295358

by flaming_sousa 2019-07-21

Algorithms - The most common text book is CLRS, but I was taught with Algorithm Design. Either are great books. To be functional, at least cover

Greedy Algorithms

Divide and Conquer

Dynamic Programming

Understanding NP Completeness

Design Patterns - Probably Design Patterns is the best place to start. I'd recommend caution with studying them closely - just be literate in the basics, and understand the problems they are trying to solve.

by roundsquare 2017-08-19

If you are really interested in the math involved you can look at any algorithms book. I used this one in my undergrad:
http://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321...

Its a good introduction, but it will require you to be decent at math and know how to do proofs.

On the other hand, if you are interested in how programs can express things, then maybe you want to learn about some CS theory. Specifically, some lambda calculus would be good to learn, but I don't have any good suggestions.

Note: All of these will be easier to read if you are pretty good at programming, so I'd say follow at least the first piece of advise above.

This is one of the best Algorithms books. Additionally, another good one is this: https://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321295358

Algorithms - The most common text book is CLRS, but I was taught with Algorithm Design. Either are great books. To be functional, at least cover

Design Patterns - Probably Design Patterns is the best place to start. I'd recommend caution with studying them closely - just be literate in the basics, and understand the problems they are trying to solve.

Its a good introduction, but it will require you to be decent at math and know how to do proofs.

On the other hand, if you are interested in how programs can express things, then maybe you want to learn about some CS theory. Specifically, some lambda calculus would be good to learn, but I don't have any good suggestions.

Note: All of these will be easier to read if you are pretty good at programming, so I'd say follow at least the first piece of advise above.

http://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321...

http://www.amazon.com/Design-Patterns-Object-Oriented-Addiso...

http://www.amazon.com/Refactoring-Improving-Existing-Addison...

http://www.artima.com/shop/forsale