Good books on Software Development
Thinking in Java by Bruce Eckel. 4th Edition.
This book is very good for beginners and intermediate level programmers. I can not think of any better book than this one.
This is a text book for Java programming. Previous versions of book is available for free in electronic format.
Effective Java by Joshua Bloch. 2th Edition.
Focuses on few aspects of language in point wise manner. Reading is recommended to become good programmer.
The Java Language Specification by James Gosling, Bill Joy, Guy Steele, Gilad Bracha & Alex Buckley. SE8 Edition.
This book captures language in details, therefore, good to be used as reference material and reading by intermediate and advanced
level programmers. Pdf/html version is available for free at http://docs.oracle.com.
Above three books are sufficient for learning Java programming language. You will need more books for different frameworks, libraries, optimization etc. but not for programming.
Java SE8 was released on March 2014. It is an major release since SE5. It has not been covered by Thinking in Java and Effective Java. Read Java SE8 from some other sources.
Thinking in C++ by Bruce Eckel. 2nd Edition.
This book is very good for beginners and intermediate level programmers. Thinking in C++ and Thinking in Java are two very good text books by same author.
Electronic form of the book is available for free.
Three books Effective C++, More Effective C++ and Effective STL by Scott Meyers.
C++ is feature rich language and programmers do misinterpret language at times. Effective series of books are must read to become good programmer of C++.
This is not a text book so read it only when you have decent knowledge of C++ programming.
The C++ Programming Language by Bjarne Stroustrup. 4th Edition.
This book captures language in details. Reading this book by intermediate and advanced level programmers is recommended. This is also a good reference book.
Thinking in C++ and Effective series are very old books and they do not cover C++11. Read C++11 from some other sources.
Effective Modern C++ by Scott Meyers, which covers C++11, is scheduled to be released on Dec 2014. This addition will complete effective series.
For two of important features of C++11 (lamdba and thread), good videos are available by Bradley Needham at youtube for beginners and intermediate level programmers.
- C++ - lambda expressions https://www.youtube.com/watch?v=5t-_wI7nFdU
- C++11 Concurrency, Part 1 https://www.youtube.com/watch?v=80ifzK3b8QQ
( 1st of series of 9 videos. 20-30 minutes each video )
Data Structures and Algorithms
Introduction to Algorithms by Thomas H. Cormen and Charles E. Leiserson (3rd Edition)
is the ultimate book on Data Structures and Algorithms. This book is for intermediate and advanced level programmers.
For beginners, I do not know any book which stands apart so no recommendation. However, many good videos/animations are available which capture
specific data structures and algorithms quite well. List of few are given below:
- Algorithm by Sesh Venugopal . Link for quicksort https://www.youtube.com/watch?v=8hHWpuAPBHo
- Data structures: Binary Tree by mycodeschool https://www.youtube.com/watch?v=H5JubkIy_p8
- Sorting Algorithm Animations http://www.sorting-algorithms.com
- PPT on Heap Sort http://www.cis.upenn.edu/~matuszek/cit594-2012/Lectures/28-heapsort.ppt
- Graph Traversals https://www.youtube.com/watch?v=zLZhSSXAwxI