Computer Science
From discrete mathematics and the theory of computation through algorithms, the algebra of types, parsers, processors, operating systems, storage engines and distributed systems, computer science as told through the free samples of the Leanpub books about it.
Created from the free samples of 15 Leanpub books and the descriptions and tables of contents of 13 more, with every source cited.
Computer science is the study of computation: what can be computed, how efficiently, and how to build the machines and programs that do it. It takes in discrete mathematics and formal proof, automata and computability, the design and analysis of algorithms, the languages programs are written in and the compilers that translate them, the architecture of processors and memory, the operating systems that share a machine among programs, and the systems that store and move data. One of the sources, written for self-taught developers, divides the field into chapters on exactly these lines and ends with three on machine learning and language models.[1]
The Leanpub books on the subject are entry points rather than a curriculum, and most are recent. A university textbook on the theory of computation and the book of a Coursera specialisation in discrete mathematics sit beside problem books that teach algorithms through graded programming challenges, a free introduction to binary search and recursion, and a thousand C++ problems in eight volumes.[2][3][6][7][8] A second group builds things from scratch to learn the theory inside them: a relational database in three thousand lines of Go, a Redis-like server in C, an x86 operating system from the boot sector, a Linux kernel explored through loadable modules, an LLM inference engine in C++.[24][10][23][22][21] A third takes the theory of types seriously, in Haskell and in Scala.[12][13]
This article covers discrete mathematics and the theory of computation, algorithms and data structures, languages, types and compilers, architecture and hardware, operating systems, storage, concurrency and distributed systems, and two neighbouring fields. Its sources are the free samples of fifteen Leanpub books and the public descriptions and tables of contents of thirteen more, listed at the end; nothing from any book's paid chapters was used. The computer science categories on Leanpub also hold hardware manuals, framework tutorials and machine-learning books with pages of their own; a few appear here only for the part of them the field claims.
Where to start
A developer with no computer science background can begin with The Computer Science Book, written by a bootcamp graduate for programmers who do not know what they do not know: each concise chapter is a standalone primer on one area with a list of the classic textbooks for going further, a map rather than a course.[1] For a first piece of real theory, TLDR: Data Structures and Algorithms is free, short and assumes only basic Python; its sample chapters teach binary search through a number-guessing game and recursion through a lazy manager delegating a countdown.[7] Discrete Mathematics for Computer Science states no prerequisites, runs its Python in the browser, and asks the reader to attempt each problem before its solution; it was last revised in 2026.[3]
A student on the degree route, or someone retracing it, has textbooks written for classrooms. Foundations of Computing is for upper-division majors, classroom-tested since 2016, and carries the theory of computation from finite automata to the halting problem with exercises in every chapter.[2] Learning Algorithms Through Programming and Puzzle Solving, the book of a Coursera and edX specialisation with over seven hundred thousand enrolments by 2022, teaches algorithm design by implementing it, with solutions checked by an automated grader in any of eleven languages.[6] Discrete Mathematical Algorithm, and Data Structure pairs discrete mathematics with the data structures built on it, in seven languages, for students who meet the two in separate courses.[4] A Quick Steep Climb Up Linear Algebra, a free and open-source linear algebra text by a university lecturer, supplies the mathematics such students need next.[5]
A working programmer who learns by building has the from-scratch books. Build Your Own Database in Go From Scratch assumes comfortable programming and nothing about databases.[24] Understanding Linux: The Kernel Perspective is for intermediate Linux users with some C.[22] Developing a Computer Operating System from Scratch assumes nothing, teaches the C and assembly it uses, and leaves out Make and linker scripts on purpose.[23] At the far end, The Science of Functional Programming expects mathematics at the level of undergraduate calculus and runs to fourteen hundred pages, and Thinking with Types says plainly that a Haskell beginner who finds type errors inscrutable should not read it yet.[13][12]
History
The field is younger than its mathematics. Boolean algebra, formal logic and the theory of computable functions came from mathematicians in the nineteenth and early twentieth centuries; Alan Turing's 1936 paper on computable numbers gave the discipline its model of a machine, and the stored-program computers of the late 1940s gave it hardware. University departments of computer science date from the 1960s, and the undergraduate curriculum, discrete mathematics and automata beside algorithms, architecture, operating systems and compilers, has kept its shape since.
Two of the sources carry dates from that period. The Linux kernel book opens with Unix: a first version in 1969, originally called UNICS as a pun on the MULTICS project it grew out of, a programmer's manual in 1971, and five decades of refinement leading to a kernel that runs Android, every one of the world's five hundred fastest supercomputers and the servers of the large internet companies. Before 1992, it notes, kernel source was something only engineers at companies like Sun Microsystems or Silicon Graphics could read.[22] The algorithms book takes its epigraph from Donald Knuth, who did not understand things until he tried to program them, and makes implementation the point, something its authors say the classic textbooks introduce ideas well without teaching.[6]
The more recent history here is of how the subject is taught and where it is applied. The algorithms specialisation launched on Coursera in 2016; its authors stopped lecturing in their own classes in favour of flipped teaching around an automated grader, and the discrete mathematics textbook from the same group grew the same way, with autograded puzzles and feedback from students at St Petersburg State University.[6][3] The reactive programming book traces one idea across the industry: a 2005 memo at Microsoft on the coming era of internet services, Erik Meijer's team dualising the Iterator pattern into a push-based model that became Rx.NET, Jafar Husain carrying it to Netflix in 2011, and RxJava's announcement in February 2013.[26]
Discrete mathematics and the theory of computation
Computer science rests on mathematics of a particular kind: not the continuous mathematics of physics but discrete structures, finite and countable, established by proof rather than measurement. The discrete mathematics textbook puts the reason in a sentence: once you have an algorithm, you need to prove it correct, and "the program works for me" does not scale to a library function that runs billions of times.[3] The theory of computation then asks what machines of each kind can compute at all.
Proofs, induction and combinatorics
Discrete Mathematics for Computer Science, by five authors including one of the algorithms book's, poses each question before explaining it, with four hundred and sixty-four problems and over two hundred code snippets and autograded puzzles.[3] Its sample's first chapter is a lesson in what a proof is. Can a chessboard without one corner be tiled with dominoes? Sixty-three cells would need thirty-one and a half tiles, so no. Without two opposite corners? Sixty-two cells, thirty-one tiles, so the counting argument is silent, and the proof needs the board's colouring: every domino covers one dark and one light cell, and the two removed corners were the same colour. The chapter uses this to introduce necessary against sufficient conditions, "if and only if", and constructive against non-constructive existence proofs, and points forward to matchings in bipartite graphs as the general test for tileability.[3] The four parts are mathematical thinking, with a project on the 15-puzzle and an appendix on SAT and integer linear programming solvers, combinatorics and probability, graph theory through flows, matchings and stable marriages, and number theory up to RSA.[3]
Discrete Mathematical Algorithm, and Data Structure argues that the two subjects cannot be understood apart, since the objects of data structures are objects of discrete mathematics, and that the concepts are the same whatever the syntax, which is why it shows each structure in C, C++, PHP, Java, C#, Python and Dart. Its ten chapters, a plan the author calls tentative, run from Boolean algebra, De Morgan's laws and set theory through arrays, abstract data types and binary trees to recursion and time complexity, with a quiz and challenges after each.[4] A Quick Steep Climb Up Linear Algebra covers the linear algebra the same students need, free and open source with a companion site, written by a lecturer at the University of Mary Washington for people starting out in computer science rather than for mathematicians.[5]
Automata, formal languages and computability
Foundations of Computing is the one textbook here on the theory of computation proper: formal languages and automata with an introduction to computability, for upper-division majors, aiming at rigour without heavy formalism.[2] Its contents are the standard ladder. Regular languages first: deterministic and non-deterministic finite automata and their equivalence, minimal automata, machines with output and their use for computer arithmetic and lexical analysis, regular expressions, regular grammars, closure properties and a pumping theorem. Then a stack is added to get pushdown automata and context-free grammars, with derivation trees, ambiguity, operator precedence, Chomsky normal form and a second pumping theorem. Then Turing machines, by way of queue machines, the universal machine, recursively enumerable and context-sensitive languages, the Chomsky hierarchy, countable and uncountable sets, and finally the halting problem and undecidability by reduction.[2]
The Computer Science Book compresses the same ground into one chapter, automata theory, computability and algorithmic complexity, and makes it the first of its primers, the order a degree would take.[1] The regular expressions the theory book proves equivalent to finite automata are the everyday tool of The Smartest Way to Learn Python Regular Expressions, which teaches them in Python as quantifiers, character sets, groups and lookaheads, names the Kleene star among its topics, and observes that wherever text meets computer science, regular expressions are already there.[11]
Algorithms and data structures
An algorithm, in the algorithms textbook's definition, is a sequence of instructions that solves a well-formulated problem, one stated unambiguously in terms of its inputs and outputs; the two questions to ask of it are whether it is correct and how much time it takes.[6] Learning Algorithms Through Programming and Puzzle Solving teaches both through implementation. Its chapters introduce pseudocode, problems against problem instances, correctness, speed and big-O notation, then the design techniques, exhaustive search, branch and bound, greedy, dynamic programming, divide and conquer and randomisation, and work through thirty programming challenges from the Algorithmic Toolbox course, from Fibonacci numbers and money change to binary search with duplicates, closest points, edit distance and longest common subsequences.[6] Each solution is checked against the authors' tests; building those meant cataloguing the ten to fifteen most frequent errors per challenge and writing over twenty thousand test cases.[6]
TLDR: Data Structures and Algorithms starts lower and is free. Its binary search chapter begins with a guessing game between 1 and 1,000: guessing in order is linear search, and by the 374th guess the reader feels the cost; told "too high" or "too low", the reader guesses the middle and the number falls on the third try. The chapter then shows why the middle is the right guess, since halving is the only choice whose worst case is guaranteed, derives the bound of the ceiling of log base two of n guesses, and names three LeetCode patterns, classic search, search for boundaries and search on answers. The recursion chapter does the same with a lazy manager, a countdown function, base cases as dominoes, the call stack and the recursion-tree method.[7]
For practice at scale, C++ Algorithmic Mastery: 1000 Challenges from Beginner to Legendary arranges a thousand C++ problems in eight volumes, each with a statement, hint, compiled solution, complexity and explanation, climbing from output and variables through sorting, graphs and dynamic programming to suffix structures, flow and matching and polynomial transforms; its sample is the first seventeen problems of the beginner volume, and its description discloses AI assistance under human planning and review.[8] Coffee Break Python is fifty short Python puzzles with an Elo-style rating of the reader's skill, a minority of them on binary search, sorting, recursion and graph traversal.[9] And Build Your Own Redis with C/C++ makes the case that data structures are best learnt from production software: it builds a key-value server from a TCP socket and a request-response protocol through an event loop, hashtables, serialisation, a balanced binary tree, sorted sets, timers, expiry and a thread pool, on the principle it quotes from Richard Feynman, that what one cannot create one does not understand.[10]
Programming languages, types and compilers
The survey's chapter on programming languages covers how a language is defined, its concepts and paradigms, and type systems; its chapter on compilers covers compilation against interpretation, the program life-cycle, building a compiler, linking, just-in-time compilation and the mechanics of garbage collection, and ends with a section on who to trust.[1] The books that go deeper come from two directions: the algebra of types, and the parsing and resolution of programs.
The algebra of types
Thinking with Types opens on a paradox: most programmers want more of their code to compile, and the type-level programmer tries to prevent code from compiling, because a type system that rules out nine of ten solutions leaves the right one easy to find. The author urges moderation, since types also rule out well-behaved programs, and takes as the example C's printf, whose variable arguments are typed by the value of its format string, which C's type system cannot express and so leaves unchecked, the source of the format-string vulnerabilities set as the first homework in security courses.[12] The first chapter is the algebra. A type's cardinality is its number of inhabitants, Void zero, unit one, Bool two; types of equal cardinality are isomorphic; Either adds, pairs multiply, functions exponentiate, so there are exactly four functions from Bool to Bool, and a tic-tac-toe board of nine fields is isomorphic to a function from a pair of three-valued coordinates. The table of these correspondences, sum to disjunction, product to conjunction, function to implication, is the Curry–Howard isomorphism: every statement in logic is equivalent to some program, and back.[12] Later chapters go on to kinds and variance, GADTs, rank-n and existential types, type families, generics and dependent types.[12]
The Science of Functional Programming takes the same correspondence as the backbone of a fourteen-hundred-page tutorial on the theory of functional programming, with examples in Scala that it says apply equally to other languages, published under a free documentation licence with its source. Its front matter promises reasoning about recursive functions and types, laws and structural analysis for functors, monads and other typeclasses, symbolic derivation and proof, free typeclass constructions and parametricity, developed through nearly two thousand code snippets, 233 step-by-step derivations, 237 tested examples and 315 exercises; it proves that the standard monads satisfy their laws and that monad transformers need eighteen.[13] Its three levels run from nameless functions and disjunctive types through functors, typeclasses, monads and applicative and traversable functors to free constructions, with two essays between on whether programmers are engineers or artisans and on declarative programming as a silver bullet.[13]
Parsers, interpreters and scope
JavaParser: Visited, written from inside the JavaParser project by three of its maintainers, is a short course in what a compiler front end does, through one library: abstract syntax trees in which everything is a node, visitors with and without state and visitors that modify the tree, the attribution of comments to nodes, the difference between pretty-printing and lexical-preserving printing, and a symbol solver that resolves types, references and method calls against a configurable set of type solvers; an appendix works a reverse-Polish-notation calculator.[14] The database book makes the same point from the other side: its last two chapters write a parser and interpreter for an SQL-like language by recursive descent, converting infix operators into a binary tree with precedence handled by recursion, and note that the lesson applies to almost any computer language.[24]
You Don't Know JS Yet: Scope & Closures treats scope from the compiler's point of view. Its sample explains that the lookup by which a variable reference finds its declaration, climbing outward through nested scopes, is a useful fiction: the scope a variable belongs to is usually settled during compilation and stored with its entry in the syntax tree, so the runtime does no lookup at all, the key optimisation lexical scope affords; only a reference that no scope in the file declares waits until other files have been compiled. The chapter then covers shadowing, where an inner declaration of the same name makes the outer variable unreachable, and the trick by which a shadowed global can still be reached as a property of the global object, which the author advises against.[15]
Computer architecture and hardware
The survey's architecture chapter is the one most self-taught developers never had: representing information, circuits and computation, the processor, memory and performance optimisations.[1] The sources that go further are practical. Practical Foundations of Windows Debugging, Disassembling, Reversing, Second Edition, Dmitry Vostokov's training course on Windows debugging, disassembling and reversing, is in parallel x86 and x64 halves that each start from memory, registers and simple arithmetic and proceed through number representations, pointers, stacks, frame pointers and function parameters to a summary of disassembly patterns; the sample is the front matter and contents of the April 2022 revision.[16] Welcome to C exists because, its description says, introductory courses taught in Java obscure how computer systems are oriented and how memory is accessed; it teaches C to students with a semester or two of Java by the differences between the languages, in twenty-five pages.[17]
The microcontroller books teach architecture where software meets the chip. Mastering STM32 - Second Edition, a nine-hundred-page guide to the STM32 family and ST's official toolchain, introduces the ARM Cortex-M architecture in its first chapter and then works through what a processor's peripherals are: the NVIC that manages exceptions and interrupts, the DMA controller, the clock tree, timers, ADCs, the I²C and SPI buses, and the low-power modes behind the WFI and WFE instructions. Later chapters design a linker script from scratch to lay out memory, describe the boot sequence and build an encrypting bootloader, and explain the fault exceptions a Cortex-M raises. The author calls it a guide to the HAL rather than a Cortex-M architecture text and sends the reader to Joseph Yiu's books for that, and notes that an STM32 value-line part costs about what an eight-bit microcontroller does.[18] Raspberry Pi Pico Tips and Tricks opens with a chapter on what separates a microcontroller from a computer before its tour of the Pico's RP2040, GPIO, I²C and SPI.[19] Instant Raspberry Pi explains the single-board computer and the system on a chip, and is otherwise a setup and administration guide for the Pi models of 2016.[20]
At the other end of the scale, Build an LLM Inference Engine in C++ is architecture for the machine-learning era: strided tensors with zero-copy views and arena allocation, matrix multiplication with SIMD, int8 and int4 quantisation, model loading with mmap, and a CUDA capstone for the heaviest kernels, built in C++20 one challenge at a time until a Llama-family model runs on the CPU; its description discloses AI assistance under human planning and review.[21]
Operating systems
An operating system, in the survey's chapter, is the boot process, interrupts as hardware support for software, the kernel, and the management of the processor, memory and persistence, with isolation and virtualisation at the end.[1] Understanding Linux: The Kernel Perspective takes the kernel's perspective on a running system. Its first chapter traces one shell pipeline: it was the kernel that turned the bash executable into a process, checked that bash was allowed to run ps, and created a process from it; memory a process allocates is a virtual structure the kernel presents. A one-line fork bomb, run as an ordinary user, is the motivating puzzle, and the method is to treat the running kernel as a black box and probe it with modules and commands, since the source is too large to read cold, something Linus Torvalds conceded in 2018. The sample then separates kernel space from user space, where even root runs, and explains the system call as the only door between them, about three hundred and thirty of them in a modern kernel, before an exercise downloads the 6.1 source and maps its tree.[22] The later chapters, on the description, cover ELF binaries, system calls traced with eBPF, virtual memory, inodes and procfs, Netfilter, and containers built from namespaces and cgroups.[22]
Developing a Computer Operating System from Scratch goes the other way and writes one. It exists, its description says, because OS development is labelled as only for geeks and the existing material leans on Make, linker scripts and heavy C and assembly, all of which it refuses. After primers in C and NASM assembly, its chapters write programs for the boot sector, define a GDT and switch to protected mode, call a C kernel, add a keyboard driver from scan codes and the PIC chip, assemble a prototype called OS0, write a disk driver and a file system with a file allocation table, and add a graphics-mode interface and sound, with closing sections pointing onward to paging, the IDT, timers, GRUB and UEFI.[23]
Storage, concurrency and distributed systems
Past the single process, the subject becomes how data is kept safely, how concurrent work is coordinated, and what changes when the computer is several computers.
Databases from first principles
Build Your Own Database in Go From Scratch insists that the core of a database is a few principles under a great deal of jargon, and builds one in about three thousand lines of Go, from a 366-line B+tree to a 2,795-line query language.[24] The sample's first chapters are a short course in durability. A database differs from a file in guaranteeing that written data survives a crash, which needs fsync, the call that flushes every level of buffering; but overwriting a file in place can leave it empty or half-written, so the first repair is to write a temporary file and rename it, and the second surprise is that rename is atomic for concurrent readers but not for power loss, because the directory needs an fsync of its own. Append-only logs with a checksum per entry come next, so that a torn last write is detected and ignored on recovery.[24] The book then explains why only two data structures suit disks, whose latency is a thousand times memory's: B+trees, short because each node holds many keys and each level costs a disk read, and log-structured merge trees, whose idea is neither the log nor the tree but merging small sorted files into larger ones across levels to bound write amplification; the remaining chapters put tables, indexes, transactions and concurrency control on top.[24]
Code a database in 45 steps (Go) covers the same ground as forty-five test-driven puzzles in Go, most under fifty lines and with no dependencies, through key-value storage, LSM-tree indexes, SQL, concurrent transactions and ACID, the first of a series its author began in 2025.[25] The survey's database chapter frames what such a system offers: relational algebra and SQL, database architecture, concurrency control and durability, and what lies beyond the relational model.[1]
Concurrency
Concurrency appears in three of the sources at three scales. The survey's chapter separates concurrency, parallelism and determinacy, then covers threads, locks and shared memory, JavaScript's event loop, and concurrency without shared state.[1] The database book's concurrency-control chapter compares a readers-writer lock, read-copy-update and optimistic control, names write skew as the hazard, and gives readers a snapshot while writers detect conflicts against history.[24] And Reactive Programming on Android with RxJava defines reactive programming as asynchronous programming with observable streams, which it unpacks as the Observer pattern applied to ordered sequences of events that may arrive at any time, from user input to network responses; the history it gives, from Microsoft's dualisation of the Iterator pattern to Netflix's RxJava, is of a model adopted so that client teams would not need to be experts in concurrent programming, which the book calls difficult.[26]
Distributed systems
Distributed Systems for practitioners is written for engineers with no distributed-systems background who want the building blocks without the papers. It defines a distributed system as components on networked computers that coordinate by passing messages, and gives three reasons to build one, performance, scalability and availability, with the arithmetic of five nines: about five minutes of downtime a year, which no single machine can promise.[27] The fundamentals chapter lists the fallacies of distributed computing collected by Peter Deutsch and colleagues at Sun Microsystems, that the network is reliable, latency zero, bandwidth infinite and so on, and adds one of its own, that there is a global clock, noting Google's TrueTime as an API that makes clock uncertainty explicit. Three properties make the field hard, network asynchrony, partial failure and concurrency; and correctness is stated as safety properties, which must never be violated, and liveness properties, which must eventually hold. The chapter closes on exactly-once semantics: delivery cannot be exactly once over an unreliable network, but processing can, by idempotent operations or by deduplicating message identifiers.[27] Later chapters, on the description, cover partitioning, replication, consistency, Paxos and Raft, time and ordering, and case studies of real systems; the survey's chapter touches the same points, the CAP theorem, consistency models, replication and consensus, sharding and message queues.[27][1]
Neighbouring fields
Two of the books sit at the field's edges. Fundamentals of Computer Vision is a reference compiled from Georgia Tech's graduate courses in computational perception, with every explanation in the compiler's own words and many hand-drawn diagrams, that omits deep learning on purpose to cover the classical algorithms still used for everything in vision that is not classification: images as functions, filtering and convolution, gradient operators and Canny edges, the Hough transform, Fourier analysis and aliasing, pyramids and blending, cameras, calibration, stereo, motion and tracking.[28] The survey's last three chapters, on machine learning, deep learning, and large language models and AI, are the field's newest territory, and the LLM inference engine above is where that territory meets the computer architecture this article began with.[1][21]
Sources
Every source is a Leanpub book or course. The note after each says which part of it was read; where no sample was available, only the public description and table of contents were used.
- 1.The Computer Science Book, Tom Johnson: For self-taught developers No sample: from the description and table of contents, thirteen chapters from the theory of computation to large language models. 2026.
- 2.Foundations of Computing, Charles D. Allison: An Accessible Introduction to Formal Languages No sample: from the description and table of contents, ten chapters from finite automata to the halting problem. 2026.
- 3.Discrete Mathematics for Computer Science, Marie Brodsky, Alexander Golovnev, Alexander S. Kulikov, Vladimir Podolskii, Alexander Shen Free sample: the contents, chapter 0 on how the book teaches and why Python, and the first chapter on proofs, with the chessboard tilings. 2026. Free sample: PDF
- 4.Discrete Mathematical Algorithm, and Data Structure, Sanjib Sinha: Major Components of Mathematics, and Computer Science Explained with the help of C, C++, PHP, Java, C#, Python, and Dart No sample: from the description and table of contents. 2026.
- 5.A Quick Steep Climb Up Linear Algebra, Stephen Davies: Version 1.1.0 No sample: from the short description; the table of contents was empty. 2025.
- 6.Learning Algorithms Through Programming and Puzzle Solving, Alexander S. Kulikov, Pavel Pevzner Free sample: the contents, About This Book, the list of programming challenges, the authors, and the opening of chapter 1 on algorithms and complexity. 2022. Free sample: PDF
- 7.TLDR: Data Structures and Algorithms, John G: From Knowing Python to Cracking Leetcode Patterns Free sample: the two sample chapters, binary search and recursion. 2026. Free sample: PDF
- 8.C++ Algorithmic Mastery: 1000 Challenges from Beginner to Legendary, Hatem M.: Solved and Tested — A Complete 8-Volume Journey from Beginner to Advanced Algorithms Free sample: the first seventeen problems of the beginner volume and the description's plan of all eight. 2026. Free sample: PDF
- 9.Coffee Break Python, Finxter: 50 Workouts to Kickstart Your Rapid Code Understanding in Python No sample: from the description and table of contents. 2019.
- 10.Build Your Own Redis with C/C++, build-your-own.org: Network programming, data structures, and low-level C. No sample: from the description and table of contents. 2025.
- 11.The Smartest Way to Learn Python Regular Expressions, Finxter, Zohaib Riaz, Lukas Rieger: Learn the Best-Kept Productivity Secret of Code Masters No sample: the PDF sample yielded no text; from the description and table of contents. 2020. Free sample: PDF
- 12.Thinking with Types, Sandy Maguire: Type-Level Programming in Haskell Free sample: the contents, the introduction, chapter 1 on the algebra behind types and chapter 3 on variance. 2019. Free sample: PDF
- 13.The Science of Functional Programming, Sergei Winitzki: A tutorial, with examples in Scala Free sample: the title page, the book's own description of its scope, prerequisites and method, and the full contents; no chapter prose. 2025. Free sample: PDF
- 14.JavaParser: Visited, Nicholas Smith, Danny van Bruggen, Federico Tomassetti: Analyse, transform and generate your Java code base No sample: from the description and table of contents. 2023.
- 15.You Don't Know JS Yet: Scope & Closures, Kyle Simpson Free sample: the preface and chapter 3 on the scope chain, lookup and shadowing. 2020. Free sample: PDF · EPUB
- 16.Practical Foundations of Windows Debugging, Disassembling, Reversing, Second Edition, Dmitry Vostokov: Training Course Free sample: the front matter and the full table of contents of the April 2022 revision; no chapter prose. 2025. Free sample: PDF
- 17.Welcome to C, Ashley DeFlumere No sample: from the description; the table of contents was empty. 2016.
- 18.Mastering STM32 - Second Edition, Carmine Noviello: A step-by-step guide to the most complete ARM Cortex-M platform, using the official STM32Cube development environment Free sample: the preface, who the book is for, the comparison with Arduino and the outline of all twenty-eight chapters. 2025. Free sample: PDF · EPUB
- 19.Raspberry Pi Pico Tips and Tricks, Malcolm Maclean No sample: from the description and table of contents. 2024.
- 20.Instant Raspberry Pi, Ashwin Pajankar: The Beginner's Guide to Raspberry Pi setup Free sample: the preface, the book's plan, and the opening of chapter 1 on single-board computers and the system on a chip. 2016. Free sample: PDF · EPUB
- 21.Build an LLM Inference Engine in C++, Hatem M.: A Challenge-Driven Guide to Building a CPU-First Inference Engine in C++20 No sample: from the description and the sixteen-unit table of contents. 2026.
- 22.Understanding Linux: The Kernel Perspective, Vladimir Likic: Covers Linux Kernel 6.x Free sample: the prologue and chapter 1, from a shell pipeline to kernel space, user space and system calls. 2026. Free sample: PDF · EPUB
- 23.Developing a Computer Operating System from Scratch, TINU TOM: An Attempt to Introduce OS Development at Beginner Level No sample: from the description and table of contents. 2025.
- 24.Build Your Own Database in Go From Scratch, build-your-own.org: From B+tree to SQL in 3000 lines Free sample: the contents, the introduction, chapter 1 on files, fsync and logs, and the start of chapter 2 on indexing data structures. 2026. Free sample: EPUB
- 25.Code a database in 45 steps (Go), Lowram Eepson: a series of test-driven small coding puzzles No sample: from the short description; the table of contents was empty. 2025.
- 26.Reactive Programming on Android with RxJava, Christopher Arriola, Angus Huang Free sample: chapter 1 on what reactive programming is, the history of Rx and RxJava, and a worked pipeline. 2017. Free sample: PDF · EPUB
- 27.Distributed Systems for practitioners, Dimos Raptis Free sample: the preface and the fundamentals chapter, from the definition and the fallacies to failure models and exactly-once semantics. 2021. Free sample: PDF · EPUB
- 28.Fundamentals of Computer Vision, George K: A gentle, accessible introduction to foundational concepts in computer vision and computational perception. Free sample: the author's note and the full contents; the sample also lists the introductory chapters, the tracking chapter and the human vision appendix. 2020. Free sample: PDF
Further reading
Other books in the library on the same ground, not cited above.
- General Systems Thinking, Gerald M. Weinberg: An Introduction Gerald Weinberg's 1975 introduction to general systems thinking, in its silver anniversary edition, with a chapter on the Square Law of Computation. 2015.
- Raspberry Pi Computing: Gas Sensors, Malcolm Maclean A Raspberry Pi project book on reading an analogue gas sensor through an analogue-to-digital converter, with a Linux commands appendix. 2020.
- Build, Think, & Create with Raspberry Pi in the Classroom, Michael C. Renne: A Teacher Toolkit Full Of Practical Advice and Curriculum Connections A teacher's guide to physical computing and beginner coding with the Raspberry Pi, tied to curriculum. 2016.