From 1983 to 1986, the legendary physicist and teacher Richard Feynman gave a course at Caltech called “Potentialities and Limitations of Computing Machines.”Although the lectures are over ten years old, most of the material is timeless and presents a “Feynmanesque” overview of many standard and some not-so-standard topics in computer science. These include computability, Turing machines (or as Feynman said, “Mr. Turing's machines”), information theory, Shannon's Theorem, reversible computation, the thermodynamics of computation, the quantum limits to computation, and the physics of VLSI devices. Taken together, these lectures represent a unique exploration of the fundamental limitations of digital computers.Feynman's philosophy of learning and discovery comes through strongly in these lectures. He constantly points out the benefits of playing around with concepts and working out solutions to problems on your own-before looking at the back of the book for the answers. As Feynman says in the lectures: “If you keep proving stuff that others have done, getting confidence, increasing complexities of your solutions-for the fun of it-then one day you'll turn around and discovers that nobody actually did that one! And that's the way to become a computer scientist.”
Richard Phillips Feynman was an American physicist known for the path integral formulation of quantum mechanics, the theory of quantum electrodynamics and the physics of the superfluidity of supercooled liquid helium, as well as work in particle physics (he proposed the parton model). For his contributions to the development of quantum electrodynamics, Feynman was a joint recipient of the Nobel Prize in Physics in 1965, together with Julian Schwinger and Sin-Itiro Tomonaga. Feynman developed a widely used pictorial representation scheme for the mathematical expressions governing the behavior of subatomic particles, which later became known as Feynman diagrams. During his lifetime and after his death, Feynman became one of the most publicly known scientists in the world.
He assisted in the development of the atomic bomb and was a member of the panel that investigated the Space Shuttle Challenger disaster. In addition to his work in theoretical physics, Feynman has been credited with pioneering the field of quantum computing, and introducing the concept of nanotechnology (creation of devices at the molecular scale). He held the Richard Chace Tolman professorship in theoretical physics at Caltech.
There's a reason Richard Feynman is the most famous physics lecturer of all time. No, it's not because he held his office hours in a strip club (though he did) or that he helped develop the atomic bomb (though he did) or that he openly abused drugs, attended nudist gatherings, and played the bongos (though he did). Surely these have contributed to his legend but, most importantly, RPF was a master of the analogy.
Warning: Impending Tangent on Science Education and Modeling Science education lends itself very well to the analogy. Consider the following. It seems most intuitive that a student wanting to learn a topic should want the most straightforward and realistic explanation possible. The student might say, "Tell me exactly how it really works." Unfortunately for the student, that's not always the best approach. First of all, science does not tell us exactly how things work. Science gives us models that act similarly enough to what we're interested in that the models make useful and accurate predictions. And where do we get inspiration from these models? From our everyday experience and intuition! Fortunately for us, the universe seems to have a beautiful mathematical structure to it and many different systems in nature seem to follow roughly the same models. What does this mean for the student? It means that often the best explanation of a physical phenomenon will, instead of focusing solely on that phenomenon, touch on related yet more familiar phenomenon that follow similar dynamics. In other words, the student should say, "Tell me how something similar but more familiar to me works, then connect them." The ability to appropriately cite these related phenomenon is the mark of a truly great teacher and was a staple of RPF's lecture style. Tangent Over
Undergraduate "computer science" education in the US has unfortunately come to mean "database manager training." The Feynman Lectures on Computation are the perfect flotation device for any disheartened, theory-loving, future mathematician or computer scientist drowning in the overwhelming sea of code that is the path to a B.S. in computer science.
Feynman begins with the question "Exactly what does a computer do?" and offers a wonderful analogy of simpleton file clerks shuttling papers back and forth. From there, he takes the reader on a tour through basic gates and operations, reversible computing, the theory of computation, "Mr. Turing's machines", computability and the halting problem, coding and information theory, thermodynamics, exotic forms of computation, the physics of transistors and other components, and the physical limits of computation. Though many books play it safe and treat only the most established theories and ideas, Feynman isn't afraid to pose current (circa 1983) research questions and his work-in-progress solutions. Feynman's primary interests are in exploring just how far we can push computers given the laws of physics: how fast can they go, what can or cannot be computed, and how much energy must we use?
Despite the quality of the lectures, this book's finest feature is the exercises. Feynman frequently preaches the "pleasure of discovery" and embeds his lectures with creative, fun, and instructive exercises. In fact, the most memorable lesson I drew from this book was that an hour of thinking and playing with an idea is often worth more than 24 of reading about it. To those who don't see the point of solving problems that were solved decades or centuries before by others, Feynman offers the following wonderful characterization of science (paraphrased):
The life of a young scientist is spent rederiving old results, gradually rediscovering more and more recent ideas, until one day, he discovers something that no one else has ever discovered before. They key point is that without all that practice on "old" problems, it's insanely difficult to develop the skill and confidence to work on "new" ones.
The major weakness of this book is that parts of it are quite dated. Feynman gave his lectures in the early 80s and even by the time this book was published in 1996, much of the hardware physics was already archaic. However, the parts of the book on theory (the bulk) are still quite relevant. Even the dated bits are quite useful to simply get the flavor of how the laws of physics can be exploited to do useful computations. Most importantly, however, dated or not, this book is just plain fun to read.
There is much that is meritorious here: Feynman's distinctive voice comes through clearly. One gets an insight into both his teaching philosophy and his working methods. The book heavily reflects what Feynman thought was important, interesting and essential to know about the field and makes accessible some really unusual topics as well as some familiar ones (if one has ever done an entry level course on the subject). There is a 10p memoir of Feynman by the book's editor at the end, which contains some delightful anecdotes that are not recorded elsewhere in the Feynman canon.
Feynman's working method, which he encourages others to adopt, was to work out as much as he can on his own first and look up what others had done afterwards. He would find that usually he had come up with no original results but quite often would have reached the same conclusions by an alternative route. Occasionally he proved something that was not known before. This technique is fabulous if one has both a wide knowledge (in memory) of physics and maths and a great facility with both, too. For lesser mortals it's completely useless.
The book oscillated from fascinating (reversible computing, quantum computers) to excruciatingly dull (logic circuit design, chip fabrication, semi-conductor device theory) depending on my personal level of interest. Even Feynman can't make engineering interesting to me! But that's not his fault; if you're into these topics it'll be great. If you're not, it's for Feynman completists only.
"Feynman Lectures on Computation" is an enjoyable read, but Feynman's conversational style may not suit everyone.
The majority of the content is both engaging and insightful. However, Chapter 6 on quantum computers left me slightly underwhelmed. Perhaps discussing this topic in 1986, when the book was published, felt premature. Despite these reservations, the book overall offers a solid foundation in core computer science concepts.
What really happens inside a computer when it executes a program? How do simple electrical signals become complex calculations, and are there fundamental limits to what computers can achieve? These are among the fascinating questions explored in The Feynman Lectures on Computation. Based on lectures delivered by Nobel Prize-winning physicist Richard P. Feynman at the California Institute of Technology between 1983 and 1986, this book offers a remarkable journey into the foundations of computer science. Edited by Anthony J. G. Hey and Robin W. Allen, it brings together Feynman's distinctive teaching style, intellectual curiosity and ability to explain complex ideas through deceptively simple examples. Unlike conventional computer science textbooks, this is not a guide to programming languages, software development or writing applications. Instead, it explores computation from the ground up, connecting abstract mathematical principles with the physical machinery that makes computers work. Its central theme is that computation is not merely a mathematical or logical activity: it is also a physical process governed by the laws of nature.
Understanding How Computers Work One of the book's greatest strengths is the way Feynman introduces computer architecture through simple, intuitive explanations. His famous "file clerk" model provides an accessible starting point for understanding how a computer operates. Imagine a clerk who can follow a list of instructions but has no intelligence or independent understanding of what those instructions mean. By following elementary rules, performing simple operations and manipulating information, this clerk can accomplish surprisingly complicated tasks. This analogy illustrates the fundamental principle behind computer programming: complex behaviour can emerge from the systematic execution of simple instructions. Feynman then develops this idea by examining binary arithmetic, digital logic and the basic components of computer architecture. AND, OR and NOT gates, together with the universal NAND gate, demonstrate how sophisticated computational operations can be constructed from relatively simple logical building blocks. What makes the discussion particularly interesting is the connection between these abstract operations and their physical implementation. Transistors, diodes and electronic circuits are not simply engineering details; they are the physical mechanisms through which logical decisions are made. This progression from simple instructions to logic gates and ultimately to electronic hardware gives the reader a much deeper appreciation of what a computer actually is.
The Theory and Limits of Computation The book becomes especially thought-provoking when Feynman explores the theoretical foundations of computer science. His discussion of Alan Turing's machines introduces the fundamental question of what it means for a problem to be computable. A Turing machine is an abstract model of computation that helps establish the boundaries of what can be accomplished through mechanical procedures. Feynman makes these ideas approachable without losing sight of their mathematical significance. His treatment of the halting problem is particularly important. It demonstrates that there are fundamental questions that no general-purpose algorithm can answer. Specifically, there is no universal procedure that can determine, for every possible program and input, whether the program will eventually terminate or continue running indefinitely. This is a powerful reminder that the limitations of computing are not simply the result of insufficient processing power or inadequate hardware. Some limitations are mathematical and cannot be overcome by building faster computers. Another important distinction is between effective and efficient procedures. A problem may be theoretically solvable through an algorithm but require so much computational time that solving it becomes practically impossible. This distinction remains highly relevant in modern computer science, particularly in algorithm design, computational complexity and cryptography.
Information Theory: Understanding the Meaning of Bits Feynman also explores the relationship between computation, communication and information theory, drawing on the pioneering work of Claude Shannon. The concept of a bit is introduced as the fundamental unit of information, while Shannon's ideas help explain how information can be measured, encoded, transmitted and compressed. The discussion goes beyond simply explaining binary data. It examines the deeper relationship between information and physical entropy, revealing that information is not an abstract concept entirely detached from the physical world. The chapters on error detection, error correction and data compression are particularly useful because they connect theoretical principles with practical applications. They demonstrate how computers can communicate reliably, even when information is transmitted through imperfect channels. These discussions also provide an important foundation for understanding modern digital communication, data storage and information processing.
The Physics of Computation: Energy, Entropy and Reversibility Perhaps the most intellectually rewarding part of the book is its examination of the physical limits of computation. Feynman asks a fundamental question: what happens physically when a computer processes or erases information? This leads to an exploration of reversible computation and the thermodynamics of computing. The important insight is that information processing is subject to the laws of physics. In particular, Landauer's principle establishes a minimum thermodynamic cost associated with logically irreversible operations, such as erasing a bit of information. The erasure of information has a physical consequence: under the relevant conditions, it must dissipate energy into the environment as heat. Reversible computation offers an intriguing alternative by allowing certain computational operations to be performed without the same fundamental energy cost associated with irreversible information loss. This is more than an interesting theoretical exercise. It raises important questions about the energy efficiency of computers and the physical constraints that will influence future hardware design. Feynman's ability to connect computer science with thermodynamics and fundamental physics is one of the book's most distinctive achievements.
Quantum Computing: Looking Beyond Classical Machines The book's discussion of quantum computation is particularly remarkable given the period in which the original lectures were delivered. Feynman recognised that conventional computers face fundamental difficulties when attempting to simulate quantum mechanical systems. The complexity of describing quantum systems can grow enormously as the number of interacting particles increases. He therefore explored the possibility of using quantum mechanical systems themselves as computational devices. The discussion introduces the foundations of quantum computation, including quantum states, superposition, entanglement and reversible quantum operations. These concepts offer a radically different perspective on information processing compared with conventional binary computing. It is important to appreciate the historical significance of these lectures. Feynman was not simply speculating about faster versions of existing computers; he was questioning whether computation itself might need to be understood differently when the underlying physical system is quantum mechanical. His ideas helped establish an important intellectual foundation for the development of quantum computing.
Strengths and Limitations The book's greatest strength is its interdisciplinary perspective. Feynman refuses to treat computer science as an isolated subject. Instead, he connects mathematics, physics, electronics, information theory and engineering into a coherent exploration of computation. His teaching approach is another major strength. Rather than presenting a collection of abstract definitions, he builds understanding through questions, examples and logical reasoning. His explanations encourage readers to think independently and experiment with ideas rather than simply memorise established results. However, the book is not without limitations. First, it is not a particularly easy introduction for someone with no background in mathematics, physics or computer science. Although Feynman explains many concepts intuitively, some discussions require patience and a willingness to work through unfamiliar mathematical and technical ideas. Second, readers looking for practical programming experience will find relatively little here. There are no modern programming tutorials, software engineering techniques or detailed discussions of contemporary programming languages. Finally, the original edition was published in 1996. Some of its hardware discussions inevitably reflect the technology and engineering practices of that period. Nevertheless, its treatment of computability, information theory, thermodynamics and the physical foundations of computation remains valuable. Readers interested in developments since the original publication may also want to consider the 2023 Anniversary Edition, which includes additional contributions on quantum computing, computing beyond Moore's Law, and artificial intelligence and machine learning.
Conclusion: A Timeless Exploration of Computation The Feynman Lectures on Computation is much more than a book about computers. It is an exploration of the relationship between information, mathematics, logic and the physical universe. Feynman takes the reader from the simple operations of an imaginary file clerk to the fundamental limits of computation, from elementary logic gates to the physics of transistors, and from classical information processing to the extraordinary possibilities of quantum computing. Perhaps the most important lesson is that computers are not magical machines. They are physical systems that manipulate information according to precise rules and within the constraints imposed by nature. For anyone who wants to move beyond simply using computers and begin understanding the principles that make them possible, this book is an exceptionally rewarding read. Its greatest achievement is that it encourages readers to ask more fundamental questions: What is computation? What can be computed? What cannot be computed? And what are the physical limits of information processing? These questions were important when Feynman delivered his lectures, and they remain central to computer science and physics today.
Overall verdict: A fascinating, intellectually stimulating and remarkably enduring exploration of the foundations of computing. It is not a book about how to program a computer; it is a book about understanding what a computer fundamentally is, what it can do, and where its limitations lie.
Somewhat of a mixed bag. The first half is very interesting, then kind of loses steam towards the end. It seems like some course lecture notes were somewhat quickly tossed together to make a book; this could have benefited from a more in-depth going over by Feynman to smooth out some rough edges. Overall worth reading for a unique physicist's view of computability, but don't expect it to be up to Feynman's usual standard of quality.
I found this book an odd mix of material I already knew, interesting material that was new to me, and material too advanced for me to follow. Overall I found it worthwhile because of the middle category. I particularly enjoyed the brief discussion of how logic gates might be implemented, the section on reversible computing, the description of how to implement a semiconductor out of doped silicon, and the discussion of how to fit all the wires into a circuit. I'm not sure who, if anyone to recommend this book to. I'm tempted to suggest both a physics and computer science background to be able to follow everything, but that's just the group least likely to learn anything. I guess I'll settle for recommending this to clones of myself.
Nice intuitive description / analysis of the theory of computing. Device part is a little outdated (understandably so) but relevant enough to get the big picture idea. Interesting to see his early influence on Mead and vice versa and how that likely influenced a generation of computer scientists
Wild academic interests together with empowering teaching methodology. Emphasis on empowering! Feynman is heavily armed with wit and tease pushing you to enjoy yourself rediscovering things using your own means. This is the only way you can appreciate other people's ideas to really understand things and have fun learning. At the very beginning, he tells an amusing history about a strange sequence of numbers that he once “discovered”. Just to learn afterwards that a clever guy called Bernoulli had discovered it somewhere in the 17th century! But he kept going further rediscovering things from the 18th century and so on. Until someday he figured out something no one had ever thought about before. Then you can start calling yourself a computer scientist, he boldly concluded.
Brilliant overview of key issues for computation. Obviously some is dated - this book is based on lectures given in '84-86 - but much of the material appears to me (speaking well outside of my domain of expertise) that would still be relevant to modern models of computation. Just because pointing out trivial mathematical errors makes me feel like I have something worthwhile to add, publisher should note that Fig. 6.3 has a bit misstated as 1 instead of 0 :).
Feynman picks some of the most influential works that fall under the umbrella of limits of what we can and cannot do with computers, like turing machine or shannon's theorems and studies them in his characteristic attack-from-many-point-of-views. Incidentally what we can and cannot do with computers also align with in a more fundamental way what we can and cannot know, perhaps that's what got him interested in the field. How he learns by trying things out from small hints before looking up other's works is fascinating. I found the seeming bitter-sweet relationship between the main editor and feynman amusing :P
Some things I wanted to remember:
The analogy of a file clerk being able to perform simple operations fast but otherwise dumb is a potent thought experiment to understand how a computer works inside. That's the pivot. One can go up, down, or sideways from there.
The set of logic gates consisting of "and" and "not" is complete, so is the singleton with "nand" gate.
Like NAND, CCN is complete but unlike NAND it is also reversible
Cannot build 1-bit memory with xor due to oscillations from feedback, flip-flop to the rescue. Delayed feedback may cause flip-flop to work incorrectly, master-slave flip-flop to the rescue. Shift-register is a multi-bit memory store.
Consistency of parentheses cannot be verified using FSM. A Turing Machine that can move in one direction: either left or right, is essentially an FSM.
A universal turing machine imitates other turing machines, useful to argue that uncomputable functions exist.
Parity bit can detect single bit error. Hamming code is a generalized parity check with multiple parity bits, each parity bit narrows down where the error is in a divide and conquer manner. It can correct a single bit error. To detect 2-bit errors an overall parity bit is used.
Shannon's theorem confirms that it is possible to communicate messages with arbitrary accuracy therefore we can choose to correct upto n bits of errors such that n+1 bit errors are unlikely. The theorem also states the lower bound on the numer of parity bits required to get the probablity of errors down to say 10e-30 or any number we choose. Interesting that single bit error can be detected with just 1 parity bit, but to detect even 2-bit of errors the number of parity bits required becomes a function of the message length.
Looking at error correcting schemes in terms of message spaces is revealing. There are two spaces: smaller, original message space and bigger, extended message space in which each original message has a number of parity bits inserted. Each point in original message space maps to a sphere in the extended message space, the radius of the sphere is the given number of bits of error we want to correct. Now if the spheres in the extended message space do not overlap, it is possible to backtrack from an errored message to its original version.
Huffman coding like morse code is an example of non-uniform coding scheme. It saves space on average by assigning shorter codes to more frequent symbols. It is also uniquely decodable, therefore no code for a smbol appears as a prefix for the code of another symbol.
A superb introduction to the basics of the theory of computation by one of the greatest minds of the twentieth century. Right down to the basics. Explaining everything beautifully. The chapters on reversible computation and the thermodynamics of computation have a bit more physics in them than you might be used to if coming from a purely comp sci background but it’s worth it. Most fascinating if all is his last chapter on quantum computing. These were lectures from the early 80s. Feynman’s focus was on How small and how efficient computers could become, right down to scales where they would necessarily be working quantum mechanically. His concern was ‘simply’ to design a machine that could do what a classical machine could do. He sketches the design of such a machine. It must have been elsewhere that he (and others) were also beginning to suggest that the quantum computers could very ... very significantly outperform classical computers for some types of computations. The rest is history.
Feynman Lectures on Computation - by Richard Feynman When Computer Science was in its infancy most Computer Scientists were Engineers, Mathematicians and Physicists. On a first read this book is brilliant explanation of the fundamentals of Computation and Telecommunications. Feynman nicely summarizes Computation and Information Theory. The comparison of a computer to a clerk was interesting and humorous. Electrical Engineering students would find his description of Flip-Flops, Semiconductor Devises and Information Theory interesting. His description of a Reversible Computing involved far too much Thermodynamics and Quantum Computing for someone without a lay understanding of Physics but these chapters would be insightful to them. The prior explanation of Transistors, nMOS and CMOS and Semiconductor Devises are concepts anyone can understand. The Boolean Algebra is the most basic concept in the book and better description could be found in a book on logic. Feynman is better at describing difficult problems. A better read is the Three Volumes of Feynman's Lectures in Physics.
If you’ve ever wondered how computers actually work at a theoretical level (I.e. how, theoretically, do binary 010010101s manage to do all the stuff computers can do), then this is probably your best bet. ~320 pages of accessible, well-written, starting from first-principles, explanations from the great Richard Feynman. **** 4 stars just cause the some of the computer engineering is quite outdated—but the theory is not.
Unfortunately, my physics knowledge is not up to snub and I was hopelessly lost in the last ~100 pages of electromagnetism and quantum mechanics. Still, I do feel like I have an elementary preschool grasp over how semiconductors work and how gates are constructed.
The NYT should create a “Turing Machine Design” game, where you have to figure out how to design Turing Machines for a new puzzle every day… a very satisfying exercise…
Here’s my solution for problem 3.5, designing a “Unary” Multiplier:
There were some parts of this book that were gripping (thermodynamics of computing, theory of computation and languages) but unfortunately many parts were just dull (symbolic logic, intricacies of logic gates), and other parts that are accessible to physicists interested in computer science but not vice versa.
Feynman does a good job on Computation starting with ones and zeroes and logic gates and building up to theory of computing including universal Turing machines, Shannon communication and entropy, reversible computing, quantum computers, how silicon chips work. A good primer on computer technology which even though written in the 1980s is still relevant.
There is much nuance, in the simple presentation- other than that, I am not sure I can say too much. The additional chapters, perhaps the idea of an editor, add nothing.
A lot of this seems pretty dated. The chapter on coding and information theory was a decent introduction, and the quantum computation material was interesting from a historical point of view, since Feynman seems to have been the first person to seriously think about quantum computers. The stuff on gates and wires and the physics of semiconductors wasn't very interesting to me, personally.
Feynman's mind leaps across multiple branches of science to bring powerful insights into computing. I love his approach and he delves from programming into the physics of the transistor in one fell swoop - and that's all in a single page!
I really like this book. It explains how computers work with helpful analogies. I recommend this book if you are interested in electronics, computers and computation.