Think Like a Programmer 2026 by No Starch Press
- Published by
- No Starch Press
- Proceeds support
- Electronic Frontier Foundation
The vital statistics
Opens Humble Bundle in a new tab. No affiliate links, no funny business.
The reading list
Check the titles before the bundle joins your backlog.
18 titles / covers and metadata where available / review links open externally
-
Computer Graphics from Scratch
by Gabriel Gambetta
Computer Graphics from Scratch demystifies the algorithms used in modern graphics software and guides beginners through building photorealistic 3D renders. Computer graphics programming books are often math-heavy and intimidating for newcomers. Not this one. Computer Graphics from Scratch takes a simpler approach by keeping the math to a minimum and focusing on only one aspect of computer graphics, 3D rendering. You’ll build two complete, fully functional renderers: a raytracer, which simulates rays of light as they bounce off objects, and a rasterizer, which converts 3D models into 2D pixels. As you progress you’ll learn how to create realistic reflections and shadows, and how to render a scene from any point of view. Pseudocode examples throughout make it easy to write your renderers in any language, and links to live JavaScript demos of each algorithm invite you to explore further on your own. Learn how to: Use perspective projection to draw 3D objects on a 2D plane Simulate the way rays of light interact with surfaces Add mirror-like reflections and cast shadows to objects Render a scene from any camera position using clipping planes Use flat, Gouraud, and Phong shading to mimic real surface lighting Paint texture details onto basic shapes to create realistic-looking objects Whether you’re an aspiring graphics engineer or a novice programmer curious about how graphics algorithms work, Gabriel Gambetta’s simple, clear explanations will quickly put computer graphics concepts and rendering techniques within your reach. All you need is basic coding knowledge and high school math. Computer Graphics from Scratch will cover the rest.
- Publisher:
- No Starch Press
- ISBN:
- 9781718500761
-
Think Like a Programmer
by V. Anton Spraul
The real challenge of programming isn't learning a language's syntax—it's learning to creatively solve problems so you can build something great. In this one-of-a-kind text, author V. Anton Spraul breaks down the ways that programmers solve problems and teaches you what other introductory books often ignore: how to Think Like a Programmer. Each chapter tackles a single programming concept, like classes, pointers, and recursion, and open-ended exercises throughout challenge you to apply your knowledge. You'll also learn how to: –Split problems into discrete components to make them easier to solve –Make the most of code reuse with functions, classes, and libraries –Pick the perfect data structure for a particular job –Master more advanced programming tools like recursion and dynamic memory –Organize your thoughts and develop strategies to tackle particular types of problems Although the book's examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular language; in fact, they often reach outside the realm of computer science. As the most skillful programmers know, writing great code is a creative art—and the first step in creating your masterpiece is learning to Think Like a Programmer.
- Publisher:
- No Starch Press
- ISBN:
- 9781593274566
-
Effective C, 2nd Edition
by Robert C. Seacord
Effective C, 2nd edition, is an introduction to essential C language programming that will soon have you writing programs, solving problems, and building working systems. The latest release of the C programming language, C23, enhances the safety, security, and usability of the language. This second edition of Effective C has been thoroughly updated to cover C23, offering a modern introduction to C that will teach you best practices for writing professional, effective, and secure programs that solve real-world problems. Effective C is a true product of the C community. Robert C. Seacord, a long-standing member of the C standards committee with over 40 years of programming experience, developed the book in collaboration with other C experts, such as Clang’s lead maintainer Aaron Ballman and C project editor JeanHeyd Meneide. Thanks to the efforts of this expert group, you’ll learn how to: Develop professional C code that is fast, robust, and secure Use objects, functions, and types effectively Safely and correctly use integers and floating-point types Manage dynamic memory allocation Use strings and character types efficiently Perform I/O operations using C standard streams and POSIX file descriptors Make effective use of C’s preprocessor Debug, test, and analyze C programs The world runs on code written in C. Effective C will show you how to get the most out of the language and build robust programs that stand the test of time. New to this edition: This edition has been extensively rewritten to align with modern C23 programming practices and leverage the latest C23 features. Updated to cover C23
- Publisher:
- No Starch Press
- ISBN:
- 9781718504127
-
Write Great Code, Volume 2, 2nd Edition
by Randall Hyde
Thinking Low-Level, Writing High-Level, the second volume in the landmark Write Great Code series by Randall Hyde, covers high-level programming languages (such as Swift and Java) as well as code generation on 64-bit CPUsARM, the Java Virtual Machine, and the Microsoft Common Runtime. Today's programming languages offer productivity and portability, but also make it easy to write sloppy code that isn't optimized for a compiler. Thinking Low-Level, Writing High-Level will teach you to craft source code that results in good machine code once it's run through a compiler. You'll learn: How to analyze the output of a compiler to verify that your code generates good machine code The types of machine code statements that compilers generate for common control structures, so you can choose the best statements when writing HLL code Enough assembly language to read compiler output How compilers convert various constant and variable objects into machine data With an understanding of how compilers work, you'll be able to write source code that they can translate into elegant machine code. NEW TO THIS EDITION, COVERAGE OF: Programming languages like Swift and Java Code generation on modern 64-bit CPUs ARM processors on mobile phones and tablets Stack-based architectures like the Java Virtual Machine Modern language systems like the Microsoft Common Language Runtime
- Publisher:
- No Starch Press
- ISBN:
- 9781718500389
-
The Art of ARM Assembly, Volume 1
by Randall Hyde
Modern Instructions for 64-Bit ARM CPUs Building on Randall Hyde’s iconic series, The Art of ARM Assembly delves into programming 64-bit ARM CPUs—the powerhouses behind iPhones, Macs, Chromebooks, servers, and embedded systems. Following a fast-paced introduction to the art of programming in assembly and the GNU Assembler (Gas) specifically, you’ll explore memory organization, data representation, and the basic logical operations you can perform on simple data types. You’ll learn how to define constants, write functions, manage local variables, and pass parameters efficiently. You’ll explore both basic and advanced arithmetic operations, control structures, numeric conversions, lookup tables, and string manipulation—in short, you’ll cover it all. You’ll also dive into ARM SIMD (Neon) instructions, bit manipulation, and macro programming with the Gas assembler, as well as how to: Declare pointers and use composite data structures like strings, arrays, and unions Convert simple and complex arithmetic expressions into machine instruction sequences Use ARM addressing modes and expressions to access memory variables Create and use string library functions and build libraries of assembly code using makefiles This hands-on guide will help you master ARM assembly while revealing the intricacies of modern machine architecture. You’ll learn to write more efficient high-level code and gain a deeper understanding of software-hardware interactions—essential skills for any programmer working with ARM-based systems.
- Publisher:
- No Starch Press
- ISBN:
- 9781718502833
-
Quantum Computing
by Andrew Glassner
A friendly introduction to quantum programming. What if you had a computer that could process billions of different inputs at the same time? Quantum computing is a radically new way to think about algorithms and data. It can feel mysterious or technically challenging, but it doesn’t have to be. If you want to understand how quantum computers work—and how to program them—this friendly, self-contained guide is for you. This approachable yet rigorous book walks you step-by-step through quantum computing fundamentals, such as superposition, quantum gates, interference, entanglement, and measurement, then teaches you how to write real quantum programs. Along the way, you’ll: Understand how to store and transform quantum information Grasp the surprising process of quantum measurement Explore Simon’s, Grover’s, and Shor’s algorithms Write and run your own quantum code using free simulators and live hardware Author Andrew Glassner is known for turning complex topics into accessible and enjoyable learning experiences. In this book, he brings visual thinking, clarity, context, and precision to the strange and fascinating world of quantum programming. All the ideas and math are built up slowly so you’ll master every step. Whether you’re a programmer, student, educator, scientist, poet, or anyone else who loves new ideas that stretch your mind, this is the guide that will take you from “What is a qubit?” to writing and running working quantum algorithms with curiosity, creativity, and confidence.
- Publisher:
- No Starch Press
- ISBN:
- 9781718504011
-
How Software Works
by V. Anton Spraul
We use software every day to perform all kinds of magical, powerful tasks. It's the force behind stunning CGI graphics, safe online shopping, and speedy Google searches. Software drives the modern world, but its inner workings remain a mystery to many. How Software Works explains how computers perform common-yet-amazing tasks that we take for granted every day. Inside you'll learn: –How data is encrypted –How passwords are used and protected –How computer graphics are created –How video is compressed for streaming and storage –How data is searched (and found) in huge databases –How programs can work together on the same problem without conflict –How data travels over the Internet How Software Works breaks down these processes with patient explanations and intuitive diagrams so that anyone can understand—no technical background is required, and you won't be reading through any code. In plain English, you'll examine the intricate logic behind the technologies you constantly use but never understood. If you've ever wondered what really goes on behind your computer screen, How Software Works will give you fascinating look into the software all around you.
- Publisher:
- No Starch Press
- ISBN:
- 9781593277178
-
Algorithmic Thinking, 2nd Edition
by Daniel Zingaro
Get in the game and learn essential computer algorithms by solving competitive programming problems, in the fully revised second edition of the bestselling original. (Still no math required!) Are you hitting a wall with data structures and algorithms? Whether you’re a student prepping for coding interviews or an independent learner, this book is your essential guide to efficient problem-solving in programming. UNLOCK THE POWER OF DATA STRUCTURES & ALGORITHMS: Learn the intricacies of hash tables, recursion, dynamic programming, trees, graphs, and heaps. Become proficient in choosing and implementing the best solutions for any coding challenge. REAL-WORLD, COMPETITION-PROVEN CODE EXAMPLES: The programs and challenges in this book aren’t just theoretical—they’re drawn from real programming competitions. Train with problems that have tested and honed the skills of coders around the world. GET INTERVIEW-READY: Prepare yourself for coding interviews with practice exercises that help you think algorithmically, weigh different solutions, and implement the best choices efficiently. WRITTEN IN C, USEFUL ACROSS LANGUAGES: The code examples are written in C and designed for clarity and accessibility to those familiar with languages like C++, Java, or Python. If you need help with the C code, no problem: We’ve got recommended reading, too. Algorithmic Thinking is the complete package, providing the solid foundation you need to elevate your coding skills to the next level.
- Publisher:
- No Starch Press
- ISBN:
- 9781718503236
-
Math for Programming
by Ronald T. Kneusel
A one-stop-shop for all the math you should have learned for your programming career. Every great programming challenge has mathematical principles at its heart. Whether you’re optimizing search algorithms, building physics engines for games, or training neural networks, success depends on your grasp of core mathematical concepts. In Math for Programming, you’ll master the essential mathematics that will take you from basic coding to serious software development. You’ll discover how vectors and matrices give you the power to handle complex data, how calculus drives optimization and machine learning, and how graph theory leads to advanced search algorithms. Through clear explanations and practical examples, you’ll learn to: Harness linear algebra to manipulate data with unprecedented efficiency Apply calculus concepts to optimize algorithms and drive simulations Use probability and statistics to model uncertainty and analyze data Master the discrete mathematics that powers modern data structures Solve dynamic problems through differential equations Whether you’re seeking to fill gaps in your mathematical foundation or looking to refresh your understanding of core concepts, Math for Programming will turn complex math into a practical tool you’ll use every day.
- Publisher:
- No Starch Press
- ISBN:
- 9781718503588
-
Computer Architecture
by Charles Fox
Not since the 1980s has computer architecture been so exciting! This book captures the moment, mining the history of computing to teach key concepts in modern hardware design and introduce the neural and quantum architectures of the future. Computer Architecture is an in-depth exploration of the principles and designs that have shaped computer hardware through the ages, from counting devices like the abacus, to Babbage’s Difference Engine, to modern GPUs and the frontiers of quantum computing. This engaging blend of history, theory, hands-on exercises, and real-world examples is sure to make for an insightful romp through a fast-changing world. You won’t just read about computer architecture, you’ll also gain the understanding to touch, build, and program it. You’ll explore the basic structures of a CPU by learning to program a Victorian Analytical Engine. You’ll extend electronic machines to 8-bit and 16-bit retro gaming computers, learning to program a Commodore 64 and an Amiga. You’ll delve into x86 and RISC-V architectures, cloud and supercomputers, and ideas for future technologies. You’ll also learn: • How to represent data with different coding schemes and build digital logic gates • The basics of machine and assembly language programming • How pipelining, out-of-order execution, and parallelism work, in context • The power and promise of neural networks, DNA, photonics, and quantum computing Whether you’re a student, a professional, or simply a tech enthusiast, after reading this book, you’ll grasp the milestones of computer architecture and be able to engage directly with the technology that defines today’s world. Prepare to be inspired, challenged, and above all, see and experience the digital world, hands-on.
- Publisher:
- No Starch Press
- ISBN:
- 9781718502864
-
The Secret Life of Programs
by Jonathan E. Steinhart
A primer on the underlying technologies that allow computer programs to work. Covers topics like computer hardware, combinatorial logic, sequential logic, computer architecture, computer anatomy, and Input/Output. Many coders are unfamiliar with the underlying technologies that make their programs run. But why should you care when your code appears to work? Because you want it to run well and not be riddled with hard-to-find bugs. You don't want to be in the news because your code had a security problem. Lots of technical detail is available online but it's not organized or collected into a convenient place. In The Secret Life of Programs, veteran engineer Jonathan E. Steinhart explores--in depth--the foundational concepts that underlie the machine. Subjects like computer hardware, how software behaves on hardware, as well as how people have solved problems using technology over time. You'll learn: How the real world is converted into a form that computers understand, like bits, logic, numbers, text, and colors The fundamental building blocks that make up a computer including logic gates, adders, decoders, registers, and memory Why designing programs to match computer hardware, especially memory, improves performance How programs are converted into machine language that computers understand How software building blocks are combined to create programs like web browsers Clever tricks for making programs more efficient, like loop invariance, strength reduction, and recursive subdivision The fundamentals of computer security and machine intelligence Project design, documentation, scheduling, portability, maintenance, and other practical programming realities. Learn what really happens when your code runs on the machine and you'll learn to craft better, more efficient code.
- Publisher:
- No Starch Press
- ISBN:
- 9781593279707
-
The Art of Randomness
by Ronald T. Kneusel
Harness the power of randomness (and Python code) to solve real-world problems in fun, hands-on experiments—from simulating evolution to encrypting messages to making machine-learning algorithms! The Art of Randomness is a hands-on guide to mastering the many ways you can use randomized algorithms to solve real programming and scientific problems. You’ll learn how to use randomness to run simulations, hide information, design experiments, and even create art and music. All you need is some Python, basic high school math, and a roll of the dice. Author Ronald T. Kneusel focuses on helping you build your intuition so that you’ll know when and how to use random processes to get things done. You’ll develop a randomness engine (a Python class that supplies random values from your chosen source), then explore how to leverage randomness to: Simulate Darwinian evolution and optimize with swarm-based search algorithms Design scientific experiments to produce more meaningful results by making them truly random Implement machine learning algorithms like neural networks and random forests Use Markov Chain Monte Carlo methods to sample from complex distributions Hide information in audio files and images, generate art, and create music Reconstruct original signals and images from only randomly sampled data Scientific anecdotes and code examples throughout illustrate how randomness plays into areas like optimization, machine learning, and audio signals. End-of-chapter exercises encourage further exploration. Whether you’re a programmer, scientist, engineer, mathematician, or artist, you’ll find The Art of Randomness to be your ticket to discovering the hidden power of applied randomness and the ways it can transform your approach to solving problems, from the technical to the artistic.
- Publisher:
- No Starch Press
- ISBN:
- 9781718503243
-
The Rust Programming Language, 3rd Edition
by Steve Klabnik, Carol Nichols, and Chris Krycho, with contributions from the Rust Community
Build stable, production-grade systems with Rust. The Rust Programming Language, 3rd Edition, teaches you to write code that the compiler can verify, teams can maintain, and systems can evolve safely over time. Written by longtime Rust community members, this book shows you how to work effectively with Rust’s type system, concurrency model, and tooling, using patterns and idioms chosen for long-term stability. Learn how to: Design programs that communicate their invariants to the compiler Use ownership, lifetimes, and traits to model real-world constraints Write concurrent and multithreaded code with confidence and clarity Build, test, document, and refactor projects using Cargo effectively Handle errors explicitly and idiomatically Apply expressive pattern matching to simplify complex logic Three substantial project chapters—focusing on a number-guessing game, a command-line tool, and a multithreaded server—demonstrate how these concepts work together in complete, real programs. Whether you’re new to Rust or already using it in production, this book helps you write code that scales safely and makes its guarantees explicit. New to this edition: Complete async programming chapter Miri for analyzing unsafe code Built on the Rust 2024 Edition Modern Rust idioms, tooling, and practices
- Publisher:
- No Starch Press
- ISBN:
- 9781718504448
-
Introduction to Computer Organization: ARM Edition
by Robert G. Plantz
See How the Magic Happens Built with ARM A64 Assembly Language The ARM edition of Introduction to Computer Organization will show you how high-level code connects to computer hardware through ARM 64-bit assembly language. You’ll learn ARM assembly language from the ground up, and all you’ll need is some basic experience with programming. As you grow to understand ARM’s 64-bit design (from first principles), you’ll develop the skills to write more efficient, optimized code. Learn the fundamentals: Data storage formats and computer encoding Binary and hexadecimal arithmetic operations Boolean algebra and logic gates Digital circuit design Explore how software and hardware interact: Memory hierarchy, from CPU registers to the cloud CPU architecture and instruction execution ARM 64-bit assembly language programming Get hands-on experience programming the GPIO on Raspberry Pi 3, 4, and 5 in assembly. Use GNU programming tools to examine code generated from C and C++ by the compiler, write assembly programs from scratch, and use the debugger to visualize execution, inspect registers, and understand machine-level operations. Each chapter includes practical “Your Turn” exercises to reinforce key concepts and build real-world programming skills. Whether you’re optimizing code performance, developing embedded systems, or simply curious about how computers execute your programs, this guide provides deep insight into how software and hardware interact to bring programs to life.
- Publisher:
- No Starch Press
- ISBN:
- 9781718502741
-
How Computers Really Work
by Matthew Justice
An approachable, hands-on guide to understanding how computers work, from low-level circuits to high-level code. How Computers Really Work is a hands-on guide to the computing ecosystem: everything from circuits to memory and clock signals, machine code, programming languages, operating systems, and the internet. But you won't just read about these concepts, you'll test your knowledge with exercises, and practice what you learn with 41 optional hands-on projects. Build digital circuits, craft a guessing game, convert decimal numbers to binary, examine virtual memory usage, run your own web server, and more. Explore concepts like how to: Think like a software engineer as you use data to describe a real world concept Use Ohm's and Kirchhoff's laws to analyze an electrical circuit Think like a computer as you practice binary addition and execute a program in your mind, step-by-step The book's projects will have you translate your learning into action, as you: Learn how to use a multimeter to measure resistance, current, and voltage Build a half adder to see how logical operations in hardware can be combined to perform useful functions Write a program in assembly language, then examine the resulting machine code Learn to use a debugger, disassemble code, and hack a program to change its behavior without changing the source code Use a port scanner to see which internet ports your computer has open Run your own server and get a solid crash course on how the web works And since a picture is worth a thousand bytes, chapters are filled with detailed diagrams and illustrations to help clarify technical complexities. Requirements: The projects require a variety of hardware - electronics projects need a breadboard, power supply, and various circuit components; software projects are performed on a Raspberry Pi. Appendix B contains a complete list. Even if you skip the projects, the book's major concepts are clearly presented in the main text.
- Publisher:
- No Starch Press
- ISBN:
- 9781718500679
-
Writing a C Compiler
by Nora Sandler
A fun, hands-on guide to writing your own compiler for a real-world programming language. Compilers are at the heart of everything programmers do, yet even experienced developers find them intimidating. For those eager to truly grasp how compilers work, Writing a C Compiler dispels the mystery. This book guides you through a fun and engaging project where you’ll learn what it takes to compile a real-world programming language to actual assembly code. Writing a C Compiler will take you step by step through the process of building your own compiler for a significant subset of C—no prior experience with compiler construction or assembly code needed. Once you’ve built a working compiler for the simplest C program, you’ll add new features chapter by chapter. The algorithms in the book are all in pseudocode, so you can implement your compiler in whatever language you like. Along the way, you’ll explore key concepts like: Lexing and parsing: Learn how to write a lexer and recursive descent parser that transform C code into an abstract syntax tree. Program analysis: Discover how to analyze a program to understand its behavior and detect errors. Code generation: Learn how to translate C language constructs like arithmetic operations, function calls, and control-flow statements into x64 assembly code. Optimization techniques: Improve performance with methods like constant folding, dead store elimination, and register allocation. Compilers aren’t terrifying beasts—and with help from this hands-on, accessible guide, you might even turn them into your friends for life.
- Publisher:
- No Starch Press
- ISBN:
- 9781718500426
-
Data Structures and Algorithms in JavaScript
by Federico Kereki
Not the Same Old JavaScript. Think you know JavaScript? Think again. This isn’t your typical coding book—it’s a deep dive into the powerful world of data structures and algorithms that will transform the way you approach problem solving in JavaScript. Whether you’re a frontend developer tackling complex applications, a backend engineer building scalable systems, or a programmer preparing for technical interviews, this book will revolutionize the way you code. Key features include: Modern JavaScript techniques: Use the latest language features and functional programming principles for cleaner, more efficient code. Performance-focused approach: Analyze and optimize algorithms using Big O notation. Essential algorithms explained: Implement and fine-tune core algorithms like quicksort, merge sort, digital search, and binary search. Algorithm design strategies: Solve challenging problems with techniques like recursion, dynamic programming, backtracking, and brute-force search. Advanced data structures: Explore complex structures such as binary search trees, heaps, and graphs. Each chapter is carefully crafted with clear, no-nonsense explanations of complex concepts, real-world coding examples, and challenging questions (with answers at the end) to reinforce your understanding. Ready to break free from ordinary JavaScript? Whether your aim is to build cutting-edge web applications, optimize critical systems, or land your dream job, this book equips you with the advanced JavaScript knowledge that sets true experts apart.
- Publisher:
- No Starch Press
- ISBN:
- 9781718502628
-
Total TypeScript
by Matt Pocock with Taylor Bell
A no-nonsense guide to all the essentials you’ll need to become a TypeScript wizard and build a TypeScript application from scratch. “An invaluable resource to countless developers.” —Ryan Cavanaugh, Development Lead Microsoft TypeScript Team TypeScript makes JavaScript safer and your editor smarter. Matt Pocock’s Total TypeScript courses have trained thousands of developers by putting the editor first: You learn types by watching what TypeScript tells you, not by memorizing rules. This book brings that method to print. You’ll start by setting up a proper TypeScript environment, then immediately begin writing and annotating code. Each chapter builds on the last—primitive types to unions, objects to classes, basic generics to type transformations—with exercises woven throughout as checkpoints, not afterthoughts. Later chapters tackle what takes longer to learn: deriving types from other types, writing type predicates and assertion functions, configuring the compiler for real projects, and building type architectures that don’t collapse under their own weight. You’ll learn to: Read TypeScript’s error messages and use your editor as a teaching tool Write precise types for objects, functions, and classes Use unions, narrowing, and generics to make types flexible without losing safety Derive and transform types so you don’t repeat yourself Configure tsconfig.json for React, Node, or library development This is a workshop in print. The one Matt Pocock has been refining for years.
- Publisher:
- No Starch Press
- ISBN:
- 9781718504165