Computing for Ordinary Mortals

Computing for Ordinary Mortals

Robert St. Amant

Language: English

Pages: 256

ISBN: 0199775303

Format: PDF / Kindle (mobi) / ePub

Computing isn't only (or even mostly) about hardware and software; it's also about the ideas behind the technology. In Computing for Ordinary Mortals, computer scientist Robert St. Amant explains this "really interesting part" of computing, introducing basic computing concepts and strategies in a way that readers without a technical background can understand and appreciate.

Each of the chapters illustrates ideas from a different area of computing, and together they provide important insights into what drives the field as a whole. St. Amant starts off with an overview of basic concepts as well as a brief history of the earliest computers, and then he traces two different threads through the fabric of computing. One thread is practical, illuminating the architecture of a computer and showing how this architecture makes computation efficient. St. Amant shows us how to write down instructions so that a computer can accomplish specific tasks (programming), how the computer manages those tasks as it runs (in its operating system), and how computers can communicate with each other (over a network). The other thread is theoretical, describing how computers are, in the abstract, machines for solving problems. Some of these ideas are embedded in much of what we do as humans, and thus this discussion can also give us insight into our own daily activities, how we interact with other people, and in some cases even what's going on in our heads.

St. Amant concludes with artificial intelligence, exploring the possibility that computers might eventually be capable of human-level intelligence, and human-computer interaction, showing how computers can enrich our lives--and how they fall short.

Gems of Theoretical Computer Science

An Introduction to Functional Programming Through Lambda Calculus (International Computer Science Series)

Building a Recommendation System with R

The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls















attention to something else. All of the machines I’ve mentioned are designed to control a complicated process in discrete stages, and if I’m aware of those stages, I can do better things with my time, without constantly monitoring what’s happening. Finally, modularity helps us understand systems of all kinds, large and small. Every American schoolchild is taught that the U.S. government has an executive, a legislative, and a judicial branch, along with the basics of how these branches interact.

just a problem with robotics; it applies throughout computing. For example, you probably know that there’s a name for the ratio of a circle’s diameter to its circumference, the Greek letter π, which is about 3.14. Why do you suppose we have a name for this number? Partly it’s for convenience, since it pops up in so many different situations, but it’s also because we can’t write down all of its digits—the number of digits in π goes out to infinity. This means that we can’t represent it perfectly

memory as they need, because they don’t need it all at once. Alternatively, we can think of memory as being a relatively fast cache for process information on secondary storage. Demand paging is a way to implement virtual memory, which lets processes act as if there’s much more memory than there actually is. This is a powerful idea that extends beyond the operating system. For example, imagine wandering through a large virtual computer environment, which could be an imaginary city or an alien

can be built with about a dozen states, but I’ll spare you the details.) Writing Turing machine programs is even more tedious than building state machines, but in the end, we don’t run into the same problem of limited space. We don’t run into any obvious problems at all. We can build Turing machines to do arithmetic and other kinds of numerical processing; they can manage and process information in all the ways I described in Chapter 4. We can encode the input and output in different forms, and

straight-line distance to estimate the actual time remaining along a path. Figure 9.4. Searching the graph with A* search. The idea of a search frontier has an important implication. From the perspective of a search algorithm, the frontier separates what’s known from what’s not yet known. We can even say that what’s beyond the frontier doesn’t yet exist for the algorithm. This means that we don’t have to think of a search algorithm as exploring some predefined set of possibilities, such as

Download sample