Good books about computer science fundamentals for newcomers?
September 30, 2014 1:02 PM   Subscribe

My friend and I are interested in recommendations for books that explain fundamentals of computer science for readers without any prior knowledge - preferably not just about how to write code, but about computer science in a larger sense, and illustrated is especially helpful. For example, around 2003 I read a slim library book with explanations of fundamental computer science topics (including binary, machine code, and how compilers work) with cheesy 90s graphics, but I don't remember the title. What was that book, and what are others like it?

Around 2006, my friend read a book that explained fundamental computer architecture and science without assuming any prior knowledge, and he doesn't remember the title of that one either.

We were inspired to ask this after seeing tweets about How Computer Programming Works by Dan Appleman (2000) - here are a couple photos of it and a couple more. It looks great, but I remember cheesier graphics for mine, and my friend isn't sure that was the book he read, especially since he remembers reading about computer architecture as well as programming.

We already know about Code: The Hidden Language of Computer Hardware and Software by Charles Petzold from 2000. We saw this previous question about "a book on the basics of how computers work", including its links to Usborne Introduction to Machine Code for Beginners (1983) and The Elements of Computing Systems: Building a Modern Computer from First Principles (2005).

We're interested in books generally in this category as well as the specific ones we read. We're more interested in books aimed at grownups (or at least teenagers) instead of books aimed at children. For context, he's planning a computer science for non-programmers course at a university, and I'm interested in ways of teaching complex technical topics to newcomers. Thanks!
posted by dreamyshade to Technology (10 answers total) 30 users marked this as a favorite
This is aimed at children, but if you're looking at a way of teaching computer science concepts to people without computers it has a bunch of really great exercises for getting important concepts across using nothing but people and paper.
posted by empath at 1:18 PM on September 30, 2014 [1 favorite]

You might like The Pattern on The Stone.
posted by pombe at 1:43 PM on September 30, 2014

I don't know what your other book was, but for the general other awesome books on the topic part of your question: there were a couple of books put out by Que that I had in my LibSci coursework back in 1999, How Computers Work and How Networks Work. I thought they were perfect. Cheesy graphics perhaps, but clearly written and very straightforward. It looks like How Networks Work only went to the 7th edition (2004), but How Computers Work made it to the 9th edition (2007).

Disclaimer: I haven't read them recently!
posted by clone boulevard at 2:08 PM on September 30, 2014

Meant to add: I used them (not directly, but as informational sources) for the next seven years while I taught an Intro to Computers-type college course. Very helpful especially for the parts of class where I had students take apart a desktop PC and put it back together and for the networks segment.
posted by clone boulevard at 2:13 PM on September 30, 2014

I would recommend The Turing Omnibus.

The organization of the book isn't great, but the chapters are short and it covers most fundamental concepts in computer science. It also has a couple exercises at the end of each chapter.
posted by Robocat at 2:55 PM on September 30, 2014 [1 favorite]

sorry this is not an 'answer', but it may be useful...

Realistically, asking for a good overview of 'computer science' is a bit like asking for a good intro to all of medicine. It's a wide field.

In an academic context, the beginning is with basic sciences like chemistry and biology, then maybe anatomy & physiology, building upward. Alternatively, a layperson's guide might just start with the ten systems.

Likewise, computer science. Do you want to wait until you fully grok binary, 2s compliment, hex, floating point arithmetic, etc before moving on? Probably not. So then, what 'area' do you want to explore at a generalist level?

Computer Science: math, binary, machine language, data structures, algorithmic complexity...

The machine-reality boundary: the operating system

Programming: to a certain degree, turning ideas about the physical world or human behavior into models. Procedural, functional, object-oriented, aspect-oriented programming. interpreted and compiled languages. constants & variables, flow control, io...

The Web: what a website really is, how information moves via protocols (http, ftp, tcp...), user interface design, client-server architecture...

Data: how it is represented, stored, retrieved. rdbms vs nosql vs everything else.

Hardware: from the network all the way down to the silicon.

IC Design: logic gates, memory, moore's law, to start

Other: well, you name it. security, the 'cloud' (e.g. well-marketed ginormous data centers), IT and public policy, technology and labor, freeware, open source...

I think if you were able to begin with a more limited scope, you would get some great recommendations.
posted by j_curiouser at 5:51 PM on September 30, 2014

This book was a really good introduction to how computers work internally -- specifically (if I remember clearly) at the level of how they process instructions, etc. It's geared for neophytes, so it gives a good easy progression through the concepts. I read it years ago and thought it was excellent.

Write Great Code: Volume I: Understanding the Machine
by Randall Hyde
posted by duoshao at 6:46 PM on September 30, 2014

I was searching for similar material as you for a friend of mine, but in video form. No book, but it's possibly still a good resource!

Just a few days ago I discovered this really nice (if quite dated) Canadian series about computers from 1983, called Bits and Bytes.

I'm no beginner to programming or computer science but got sucked into the series a little myself - oh the nostalgia! It is somehow very charming!

But more relevant for you: I was just telling my husband today that I'm impressed by the quality of the teaching... they really break the major concepts down in a good way, and tend to repeat things every few episodes.
And there are several small animated excerpts on the same channel that explain things like binary code, computer architecture, compilers vs. interpreters etc. in just a few minutes.

Even if you or your friend wouldn't use the material directly, it might be a good template for a lesson on a new concept, or have some good analogies to use. Good luck!
posted by Pieprz at 1:18 AM on October 1, 2014 [1 favorite]

Second the Dewdney "New Turing Omnibus". Could there be a better book? Sure,
only no one has written it yet. I disagree with the comment about the impossibility
of an overview, as this book is exactly that. Read, know, each chapter, and at least you won't
be surprised too much by any topic you may stumble into in general computer science.

p.s. There is no such thing as "cheese" in computerdom, just things that are
more or less charming.
posted by Chitownfats at 4:49 AM on October 1, 2014

Response by poster: Thanks everyone for your suggestions! These have all been fun to look into.
posted by dreamyshade at 11:15 PM on October 6, 2014

« Older Considering a job with lots of travel -- give me...   |   Adventure Advice for Two Old Men Newer »
This thread is closed to new comments.