C and C++: [PPPC++], [EC++], [EMC++], [KNR], [HFC], [RNG11] and [SP11].
Design and Architecture: [GOF] and [HFDP].
Data Structure and Algorithm
- Deque
- Extendable Array (Vector)
- Linked List
- Stack
- Queue
- Heap
- Heaps. [CLRS], ch. 6, pages 151-159.
- Priority Queue
- Priority queues. [CLRS], ch. 6, pages 162-164.
- Tree
- Representing rooted trees. [CLRS], ch. 10, pages 246-247.
- Binary Search Trees. [CLRS], ch. 12, pages 286-298.
- Red-Black Trees. [CLRS], ch. 13, pages 308-329.
- Trees. [GT], ch. 2, pages 68-83.
- Binary Search Trees. [GT], ch. 3, pages 94-100.
- Index-Based Searching. [GT], ch. 3, pages 104-106.
- Red-Black Trees. [GT], ch. 4, pages 126-129.
- Order statistic tree. Available at https://en.wikipedia.org/wiki/Order_statistic_tree
- Sorting
- Insertion sort. [CLRS], ch. 2, pages 16-20.
- Selection sort. [CLRS], ch. 2, page 29.
- The divide-and-conquer approach. [CLRS], ch. 2, pages 30-34.
- Bubblesort. [CLRS], ch. 2, page 40.
- The heapsort algorithm. [CLRS], ch. 6, pages 159-161.
- Quicksort. [CLRS], ch. 7, pages 170-190.
- Selection sort. [AYB], ch. 2, pages 32-35.
- Quicksort. [AYB], ch. 4, pages 60-71.
- Searching
- Range Queries
- Range Queries. [GT], ch. 3, pages 101-103.
- Maximum Subarray
- Strassen’s Matrix Multiplication
- Strassen’s algorithm for matrix multiplication. [CLRS], ch. 4, pages 75-82.
- Josephus problem
- Matrix
- Matrices and matrix operations. [CLRS], Appendix D, pages 1217-1222.
Bibliography
- [AYB] Aditya Y. Bhargava. Grokking Algorithms. Manning Publication, 2016. ISBN 1617292230.
- [RNG11] Walter E. Brown. Random Number Generation in C++11. ISO/IEC JTC1/SC22/WG21 document N3551, 2013-03-12. Available at https://isocpp.org/files/papers/n3551.pdf
- [CLRS] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein. Introduction to Algorithms (3rd ed.). MIT Press, 2009. ISBN 0262033844.
- [HFDP] Eric Freeman, Elisabeth Robson, Kathy Sierra and Bert Bates. Head First Design Patterns: A Brain-Friendly Guide. O'Reilly Media, 2004. ISBN 0596007124.
- [GOF] Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, 1994. ISBN 0201633612.
- [GT] Michael T. Goodrich and Roberto Tamassia. Algorithm Design and Applications. Wiley, 2014. ISBN 1118335910.
- [HFC] David Griffiths and Dawn Griffiths. Head First C: A Brain-Friendly Guide. O'Reilly Media, 2012. ISBN 1449399916.
- [KNR] Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language (2nd ed.). Prentice Hall, 1988. ISBN 0131103628.
- [SP11] David Kieras. Using C++11’s Smart Pointers. EECS Department, University of Michigan, June 2016. Available at http://umich.edu/~eecs381/handouts/C++11_smart_ptrs.pdf
- [EC++] Scott Meyers. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd ed.). Addison-Wesley Professional, 2005. ISBN 0321334876.
- [EMC++] Scott Meyers. Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14. O'Reilly Media, 2014. ISBN 1491903996.
- [PPPC++] Bjarne Stroustrup. Programming: Principles and Practice Using C++ (2nd ed.). Addison-Wesley Professional, 2014. ISBN 0321992784.