This site is not maintained. Click here for the new website of Richard Dawkins.


← How do computers work? Book recommendations please

ajn1983's Avatar Jump to comment 13 by ajn1983

This is just what I love to see! I'm a mature student studying Electronic and Computer Engineering (final year) and have run a PC support business for years. It's very rare to meet a 'lay' person who is interested in how computers work. The usual approach is to treat the computer as a magic box - I get a lot of "I just use the thing" from people.

I know a lecturer who speculates that interest has declined in electronics/low level hardware design due to a "magic" effect. That is, things are so complicated nowadays, people don't know where to start. Compare this to the technology of the 60s and 70s. Devices could be constructed, economically, with commonly available components using simple designs found in an electronics magazine. Anyway, I digress.

Here's the approach that I would suggest:

1) Don't try and know everything. You can't, there's too much.

2) Look at the appropriate level of abstraction for the particular phenomenon you are examining. For example, you can understand data structures and algorithms perfectly without knowing anything about physics.

3) Following on from (2), learn about different levels of abstraction separately - don't try and join them all together from the start. Eventually, the fog will clear and you will be able to connect the dots. That probably sounds like gibberish, so I'll try and give an example:

Learn about number systems like binary and hex. Separately learn how to write a simple program in C. The two things will seem completely distinct. In a couple of years when your knowledge has grown, you might start looking at Assembler and machine code. You'll see how C is compiled to Assembler, Assembler maps to machine code and machine code is represented in binary or hex. All the gaps just seem to disappear and everything fits together like a massive nerdy jigsaw.

4) Get an old PC system (eBay if you don't already have one) and take it to bits. Mess around with it - change things, see what happens. If it's not your main system, it doesn't matter if it breaks. Note that due to the modularity of modern systems, it will be impossible to get any sort of low-level hardware understanding doing this but it's a good way of finding your feet and being able to put the complicated stuff you'll read later on into context.

When you're ready for some more complicated concepts, I would recommend looking at material available from MIT. They came up with the fantastic idea of making videos of the lectures they give to undergraduates available to anyone in the world for free.


Mon, 03 Jan 2011 17:33:37 UTC | #572777