A few decades into the digital era, scientists discovered that thinking in terms of computation made possible an entirely new way of organizing scientific investigation; eventually, every field had a computational branch: computational physics, computational biology, computational sociology. More recently, “computational thinking” has become part of the K–12 curriculum. But what is computational thinking? This volume in the MIT Press Essential Knowledge series offers an accessible overview, tracing a genealogy that begins centuries before digital computers and portraying computational thinking as pioneers of computing have described it.
The authors explain that computational thinking (CT) is not a set of concepts for programming; it is a way of thinking that is honed through practice: the mental skills for designing computations to do jobs for us, and for explaining and interpreting the world as a complex of information processes. Mathematically trained experts (known as “computers”) who performed complex calculations as teams engaged in CT long before electronic computers. The authors identify six dimensions of today's highly developed CT—methods, machines, computing education, software engineering, computational science, and design—and cover each in a chapter. Along the way, they debunk inflated claims for CT and computation while making clear the power of CT in all its complexity and multiplicity.
Peter J. Denning is Distinguished Professor of Computer Science at the Naval Postgraduate School, Monterey, California. He is the coauthor of The Innovator's Way: Essential Practices for Successful Innovation and Great Principles of Computing, both published by the MIT Press.
Matti Tedre is a Professor in the School of Computing at the University of Eastern Finland, Associate Professor in the Department of Computer and Systems Science at Stockholm University, and the author of The Science of Computing: Shaping a Discipline.
By describing the mathematical, engineering, and scientific traditions of computing, The Science of Computing: Shaping a Discipline presents a rich picture of computing from the viewpoints of the field’s champions. The book helps readers understand the debates about computing as a discipline. It explains the context of computing’s central debates and portrays a broad perspective of the discipline.
The book first looks at computing as a formal, theoretical discipline that is in many ways similar to mathematics, yet different in crucial ways. It traces a number of discussions about the theoretical nature of computing from the field’s intellectual origins in mathematical logic to modern views of the role of theory in computing.
The book then explores the debates about computing as an engineering discipline, from the central technical innovations to the birth of the modern technical paradigm of computing to computing’s arrival as a new technical profession to software engineering gradually becoming an academic discipline. It presents arguments for and against the view of computing as engineering within the context of software production and analyzes the clash between the theoretical and practical mindsets.
The book concludes with the view of computing as a science in its own right—not just as a tool for other sciences. It covers the early identity debates of computing, various views of computing as a science, and some famous characterizations of the discipline. It also addresses the experimental computer science debate, the view of computing as a natural science, and the algorithmization of sciences.
All our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favorites is the most fulfilling? These may seem like uniquely human quandaries, but they are not: computers, too, face the same constraints, so computer scientists have been grappling with their version of such problems for decades. And the solutions they've found have much to teach us.
In a dazzlingly interdisciplinary work, acclaimed author Brian Christian (who holds degrees in computer science, philosophy, and poetry, and works at the intersection of all three) and Tom Griffiths (a UC Berkeley professor of cognitive science and psychology) show how the simple, precise algorithms used by computers can also untangle very human questions. They explain how to have better hunches and when to leave things to chance, how to deal with overwhelming choices and how best to connect with others. From finding a spouse to finding a parking spot, from organizing one's inbox to understanding the workings of human memory, Algorithms to Live By transforms the wisdom of computer science into strategies for human living.
Computing is usually viewed as a technology field that advances at the breakneck speed of Moore's Law. If we turn away even for a moment, we might miss a game-changing technological breakthrough or an earthshaking theoretical development. This book takes a different perspective, presenting computing as a science governed by fundamental principles that span all technologies. Computer science is a science of information processes. We need a new language to describe the science, and in this book Peter Denning and Craig Martell offer the great principles framework as just such a language. This is a book about the whole of computing—its algorithms, architectures, and designs.
Denning and Martell divide the great principles of computing into six categories: communication, computation, coordination, recollection, evaluation, and design. They begin with an introduction to computing, its history, its many interactions with other fields, its domains of practice, and the structure of the great principles framework. They go on to examine the great principles in different areas: information, machines, programming, computation, memory, parallelism, queueing, and design. Finally, they apply the great principles to networking, the Internet in particular.
Great Principles of Computing will be essential reading for professionals in science and engineering fields with a “computational” branch, for practitioners in computing who want overviews of less familiar areas of computer science, and for non-computer science majors who want an accessible entry way to the field.