60 Years of Hamming Codes
swandives writes "In 1950 Bell Labs researcher Richard W. Hamming made a discovery that would lay an important foundation for the modern computing and communications industries — coming up with a method for performing computing operations on a large scale without errors. Hamming wrote about how self-checking circuits help eliminate errors in telephone central offices. He speculated the 'special codes' he proposed — which became known as Hamming codes — would only need to be applied to systems requiring unattended operation for long periods or 'extremely large and tightly integrated' systems where a single failure would incapacitate the entire installation. Hamming code was the first discovery in an immense field called coding theory. This article looks back on the history of Hamming codes, their applications, and includes interviews with Todd Moon, Professor of electrical and computer engineering at Utah State University and David MacKay, Professor of natural philosophy in the department of Physics at the University of Cambridge and chief scientific adviser to the UK Department of Energy and Climate Change. An interesting read, about a little-known but fundamental element of information theory."
News for nerds, stuff that matters.
This submission qualifies.
"There is a way that seems right to a man, but its end is the way of death." Proverbs 16:25 (NKJV)
Feynman's excellent book 'Lectures on Computation' has a fantastic explanation of Hamming codes and distance, error correction etc.
If you're even remotely interested in information theory you *must* read this book! No prior knowledge required.
If you're a cheap bastard I'm sure you can find a pdf, but it's well worth the asking price.
TFA mentions Mackay's book. It is an awesome book, and is free online. I have a dead-tree copy, too. Well worth the price.
SJW n. One who posts facts.
That's right. Had Hamming's discovery been more well known, he might have won the Claude E. Shannon Award.
DUCWIDT?
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
If you know anything about information theory, you know about hamming codes.
If you know anything about information theory, you know about hamming codes.
If you know anything about information theory, you know about hamming codes.
If you know anything about information theory, you know about hamming codes.
If you know anything about information theory, you know about hamming codes.
Hamming code was the first discovery in an immense field called coding theory
First discovery? I would say Shannon's historic paper on coding theory "A Mathematical Theory of Communication" from 1948 was earlier.
Not to burst your delusions, but MUCH of the Bell Labs research in this area had to do with communications (i.e. telephone) SATELLITES.
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
I'm sure a whole bunch of people know about Bill Gates and Steve Jobs, but their impact upon computing and information theory is comparatively minor compared to Richard Hamming. There are many such individuals who if you have studied your history of computing that really ought to be much better known but little is really talked about even in computing circles. Usually there is a theorem or algorithm which bears the name of an individual like Dijkstra's algorithm, but who really knows much about Edsger Dijkstra, the guy who came up with the concept in the first place, or for that matter even knows the names behind the LZW compression algorithm?
If you went to a group of college seniors in computer science, how many of them would have ever heard about Grace Hooper? First classmen in the Naval Academy? (I would sure hope that the U.S. Naval Academy at least would have taught their computer science cadets something about Admiral Hooper, especially if they get assigned to the USS Hooper).
There are a bunch of people you should know in the history of computing, and unless you have a very good professor who doesn't claim to have invented the integrated circuit and every other part of computing, you generally don't know the whys for how most concepts in computer science were ever derived.
For the record, Dr. Moon is the Department Head of ECE. He gives killer lectures, but his tests will make you wish for death ;-).
I'm currently working on an MS there. Good to see him get some publicity.
Hamming codes are practical things, while Shannon's analyses of codes were more abstract (though still hugely useful and important)
Consider the checksum bit. It helps to catch errors but there are 2 problems. First, if there is a double error (more likely if the checksum is on a longer string), then the error isn't caught Second, even if we know there is an error, we can't recover, but have to resend.
The easiest error-correcting code is to replace every bit with a triple copy of itself. So
101 becomes 111000111
This way, we can recover from any single error, but the scheme is very inefficient.
Hamming's simplest code takes a 4 bit message and adds 3 very special parity bits (think partial checksums) arranged in a clever way so that any one bit error can be isolated and corrected.
That's the basic idea. The details are many places, such as http://en.wikipedia.org/wiki/Hamming(7,4)
Exactly what I was thinking.
There is no Admiral Grace Hooper. There was, however, an Admiral Grace Hopper, who has a few things (including Hopper Hall at Dam Neck), named after her.
I do not read or respond to AC's. If you want a discussion, log in. Otherwise, don't waste your time.
Actually, Hamming is a bit overrated. He was a tireless self-promotor who himself named these things after himself. Really a no-no. Hamming codes and Hamming distance are fairly simple constructs and by no means the first, the last, or the most significant in the field. The real giant in the field is of course Claude Shannon, who, in my opinion, has been more important for the field of computing as a whole than even Alan Turing himself (Shannon's master thesis for instance proved how to do arbitrary boolean circuitry in hardware. 1932). Hamming is just a footnote. He found a good algorithm, and ran with it for fame and glory.
If you went to a group of college seniors in computer science, how many of them would have ever heard about Grace Hooper? First classmen in the Naval Academy? (I would sure hope that the U.S. Naval Academy at least would have taught their computer science cadets something about Admiral Hooper, especially if they get assigned to the USS Hooper).
A very nice post but it made me go "Ouch!" every time you called her "Hooper".
Cwm, fjord-bank glyphs vext quiz
"Sustainable energy - without the hot air", available as a free PDF download.
I haven't read it yet, but I will given his credibility with the article and other book.
http://www.withouthotair.com/ or http://www.inference.phy.cam.ac.uk/withouthotair/
Here is a podcast of a lecture he gave at Cambridge on the topic of sustainable energy.
http://mediaplayer.group.cam.ac.uk/component/option,com_mediadb/task,play/idstr,CU-CSF-Lectures_2008-12_David_MacKay/vv,-1/Itemid,42
Want to be like Hamming? Here's how:
In summary, I claim that some of the reasons why so many people who have greatness within their grasp don't succeed are:
* they don't work on important problems,
* they don't become emotionally involved,
* they don't try and change what is difficult to some other situation which is easily done but is still important,
* and they keep giving themselves alibis why they don't.
* They keep saying that it is a matter of luck.
I've told you how easy it is; furthermore I've told you how to reform. Therefore, go forth and become great scientists!
Source: http://paulgraham.com/hamming.html
His book Coding and Information Theory is by far the best written and most readable hard science textbook I ever had in my university career. Read it if you want to understand the subject, read it if you want to understand how to write a good textbook!
Not to hijack the information about important work by Hamming, but those interested in Grace will have an easier time locating information about her searching on Grace Hopper, Navy Rear Admiral, Lower Half. Her 1986 David Letterman interview: http://www.youtube.com/watch?v=57bfxsiVTd4
Yup, a brilliant guy I'm sure, but not the guy I want teaching me. At the end of a course, (call me greedy), _I_ want to know how to do everything in the course, not merely have a warm fuzzy WEE-WOW feeling that something exciting just went by that I can't quite reproduce.
Give me Richard Hamming's books instead of Feynman's any day. Ok, they won't make you go "WEEE WOW!!!", but on the other hand you will have an excellent understanding of the material AND be able to reproduce and USE any result in them yourself.
Information theory was not my option, but I was in Telecom Bretagne when turbocodes were discovered and many theoretic aspects has been demonstrated. Did the turbocodes make the Hamming code obsolete or do I miss something ?
Terry Welch.
Well, of course, he did win the Richard W. Hamming Medal 16 years later. I think the issue with Hamming is that he was so productive, and at the forefront of the field for so long, that he never settled into the "grand old man" role that tends to attract awards. I have a pet theory that for most researchers, winning big awards is a signal of their decline, because the politics of award committees means that its rare for somebody who still publishes controversial and original research to survive the nomination process. I mean, he wasn't even voted to be an IEEE fellow until 18 years after he published the Hamming code! His career was so successful in so many areas that it took some time for the applied mathematics community that all these really interesting little ideas in their own fields were the result of an avalanche of singular proportions.
Hamming clearly intended to do this, and often contrasted himself with Shannon. He categorized his approach in a talk called "You and Your research" delivered at Bell labs in 1986, which I'd highly recommend to any researcher who hasn't seen it.
OK, but there was Mr. Hooper on Sesame Street, whose death was handled with grace, which was admirable. So that's almost the same thing.
In my Naval career, I was lucky enough to come across both of these titans of computing’s early age. RADM Hopper gave a lecture to every plebe class at the Naval Academy , including mine in 1984, where she would give each Midshipman a short length of wire of the length that light traveled in a nanosecond. She used these to illustrate stories she told of the early days of computers that were programmed by connecting wires differently. Her speech was the first place I heard “it was easier to beg forgiveness later than get permission before.”
I wasn’t a CS/EE major, so I hadn’t previously heard of Hamming when I went to the Naval Postgraduate School in 1993 to get a master’s in CS. He was teaching there as an adjunct since he retired from Bell Labs and the entire faculty talked about him as if he were God. I really didn’t know his history, and chalked it up to parochialism.
I was lucky enough to have him as my professor for Computer Automata. It was like taking physics from someone who had been a contemporary of Newton, Copernicus, Kepler, and Einstein. His stories about working on the Manhattan Project were fascinating. Whenever we came across any of the big names in early computing theory (with the possible exception of Turing, whom I’m not sure he met – I don’t remember any stories about him), Hamming had a personal story of his interaction with them. I will never get rid of my Automata book, because the margins are filled in with some of these. For example, next to the discussion of Backus-Naur form is the note, “Hamming told Backus not to become a hippie, because if he did, he would never do good work again. Backus didn’t listen, became a hippie, and did no good work again.” It really made what can be an otherwise dry class come alive, and it drove home exactly how young a field CS actually was.
A previous poster added a link to Hamming’s talk upon his retirement at Bell Labs, “You and Your Research”, which I cannot recommend highly enough. (http://paulgraham.com/hamming.html) Even if you’re not a researcher, it is worth reading. My favorite line in it is ”Given two people with exactly the same ability, the one person who manages day in and day out to get in one more hour of thinking will be tremendously more productive over a lifetime.”
Midshipmen majoring in Computer Science at the US Naval Academy (my major and alma mater, class of '00) are indeed cognizant of Admiral Hopper, though I don't think there's anything specifically that teaches about her contributions. Part of this (and here I start to hypothesize) is the relative age - ADM Hopper's contributions, though extremely important and noteworthy, are relatively recent, in comparison to the rest of what goes on at USNA - the goal is, after all, to provide highly technically-trained graduates to drive ships, not go on to academic careers. Much of the infrastructure and heritage stems from the people and events of the Revolutionary War (aka "War for American Independence") through World War II, heavily favoring the mid- to late-1800's. Operational topics before and after that (and during, to give meaning and context to the heritage) are taught in classroom settings. But though ADM Hopper's contributions to the field of computer science are important, at best it's the contributions that are taught (not the name), and definitely not in an operational context (she spent her entire career as a reservist and rarely was operational).
Weylin
67.5% Slashdot Pure I guess I need to work on that....