Here is a list of some excellent books and documents which we’ve found useful for our students and client organizations, as well as in our software development consulting practice. Click the title to learn more and order or download.
The C Programming Language
- The C Programming Language, 2nd Edition (aka, K&R2)
- C Primer Plus (6th Edition)
- The CERT C Coding Standard, Second Edition:
98 Rules for Developing Safe, Reliable, and Secure Systems (2nd Edition) - The CERT C Secure Coding Standard
- Mastering Algorithms with C
- GNU Coding Standards (PDF)
- ISO/IEC 9899:2011 (C11 Standard)
The C++ Programming Language
Introductory (if C++ is your first programming language)
- C++ Primer Plus (6th Edition)
- Programming: Principles and Practice Using C++
- The C++ Standard Library: A Tutorial and Reference (2nd Edition)
Introductory (if C++ is NOT your first programming language)
- A Tour of C++, 2nd Edition
- Accelerated C++: Practical Programming by Example
- The C++ Standard Library: A Tutorial and Reference (2nd Edition)
Intermediate C++
- Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
- More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions
- Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions
- C++ Templates: The Complete Guide (2nd Edition)
- Discovering Modern C++: An Intensive Course for Scientists, Engineers, and Programmers
Advanced C++
- C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
- Modern C++ Design: Generic Programming and Design Patterns Applied
- C++ Concurrency in Action
- Advanced Metaprogramming in Classic C++
C++ Best Practices
- C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
- Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)
- More Effective C++: 35 New Ways to Improve Your Programs and Designs
- Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
- Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library
C++ Language References
- The C++ Programming Language, 4th Edition
- The C++ Standard Library: A Tutorial and Reference (2nd Edition)
- Standard C++ IOStreams and Locales: Advanced Programmer’s Guide and Reference
- C++ Core Guidelines
- C++ Super FAQ
- CppReference.com Wiki
- C++ Programming Language Standards
- The Design and Evolution of C++ (Historical)
The C# Programming Language
- C# 6 for Programmers (6th Edition)
- Effective C#: 50 Specific Ways to Improve Your C# (3rd Edition)
- More Effective C#: 50 Specific Ways to Improve Your C# (2nd Edition)
- Framework Design Guidelines:
Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition) - Standard ECMA-334 C# Language Specification (PDF)
Algorithms and Data Structures
Design Patterns
- Design Patterns: Elements of Reusable Object-Oriented Software
- Head First Design Patterns: A Brain-Friendly Guide
Intel Assembly Language
- Assembly Language for x86 Processors (7th Edition)
- x86 Instruction Set Architecture
- Combined Volume Set of Intel 64 and IA-32 Architectures Software Developer’s Manuals (PDF)
- Introduction to x64 Assembly (PDF)
Operating System Architecture/Internals
- Windows Internals, Part 1:
System architecture, processes, threads, memory management, and more (7th Edition) - Windows Internals, Part 2 (7th Edition)
- The Design of the UNIX Operating System
Software Engineering & Project Management
- The Mythical Man-Month: Essays on Software Engineering, Second (20th Anniversary) Edition
- The Pragmatic Programmer: From Journeyman to Master
- Code Complete: A Practical Handbook of Software Construction, Second Edition
Ethics for Computing Professionals
- ACM Code of Ethics and Professional Conduct (PDF)
- ACM Code of Ethics and Professional Conduct – Using the Code – Case Studies