Great Computer Science Papers?
slevin writes "Recently I listened to a talk by Alan Kay who mentioned that many 'new' software ideas had already been discovered decades earlier by computer scientists - but 'nobody reads these great papers anymore.' Over the years I have had the opportunity to read some really great and thought-provoking academic papers in Computer Science and would like to read more, but there are just too many to sort through. I'm wondering what great or seminal papers others have encountered. Since Google has no answers, perhaps we can come up with a list for the rest of the world?"
Often, when you're new to a given domain, there exists a book (on citeseer too...) that covers the domain and express, often better than the original authors, the main ideas.a nnonday/pape r.html
Then, you can use citeseer to see what's new and what's the fashion in the domain.
Anyway, one of the best papers (and oldest) I read give birth to a whole community:
http://cm.bell-labs.com/cm/ms/what/sh
I wonder how many IT gurus are members of ACM or IEEE Computer Society? The % of /. members who are in ACM must be very small because ACM only has 75,000 members in total.
Two wrongs don't make a right, but three lefts do.
Dijkstra's archive is on line and is indeed fascinating from both an historical point of view and full of ideas as well. Check it out...
http://www.cs.utexas.edu/users/EWD/
McCarthy's paper on Lisp: Recursive Functions of Symbolic Expressions and Their Computation by Machine (Part I).
For a refreshing analysis of the paper by Lisp guru Paul Graham (the same guy who proposed the idea of Bayesian anti-spam filtering), see The Roots of Lisp.
Join the NFSNET. Our prime goal is making little numbers out of big ones. http://www.nfsnet.org/
Try http://citeseer.org/ Helped me out with many CS papers whilst writing up my thesis.
...but Claude E. Shannon's paper, A Mathematical Theory of Communication has changed our outlook on information and communication. The importance of this paper on modern communication cannot be stressed enough, and it is very readable. If I had 10 papers to take to a desert island, surely this one would be on my list (:
Join the NFSNET. Our prime goal is making little numbers out of big ones. http://www.nfsnet.org/
This has been reported in Slashdot a while ago, but it deserves another mention: the manuscripts of Edsger W. Dijkstra. There are more than a thousand documents written by Dijkstra in this archive, and very interesting ones too -- careful or you'll lose days browsing it like I did.
Join the NFSNET. Our prime goal is making little numbers out of big ones. http://www.nfsnet.org/
While not exactly classic papers, some of these may be regarded as classic by our grandchildren when the time comes, since they're at the forefront of computer science's research today. A good introduction to quantum computing was recently linked in a Slashdot story posting: The Centre for Quantum Computation's Tutorials. Very, very interesting reading, if a bit advanced.
Join the NFSNET. Our prime goal is making little numbers out of big ones. http://www.nfsnet.org/
Citeseer was cited in the blurb, but a really nice service that they provide is the Computer Science Directory. There you can look for papers sorted by domain, and ranked by several criteria like "authority". The top papers are usually a good read if you are interested in a particular domain.
Does anyone know of a website where you can get access to comp sci and comp eng papers and stuff?
Try looking at arxiv.org and CiteSeer.
OS Reviews: Free and Open Source Software
the American Association for AI
Though it has very few entries, and is no longer updated, there are at least two papers in that list that the typical Slashdotter may have heard about: Go To Statement Considered Harmful, by Dijkstra, and Reflections on Trusting Trust, by Ken Thompson.
The remaining ACM Classics of the Month are here.
Join the NFSNET. Our prime goal is making little numbers out of big ones. http://www.nfsnet.org/
Reference: Jerome H. Saltzer, and Michael D. Schroeder. The Protection of Information in Computer Systems. (invited tutorial paper) Proceedings of the IEEE 63, 9 (September 1975) pages 1278-1308. Reprinted in David D. Clark and David D. Redell, editors. Protection of Information in Computer Systems. IEEE 1975 CompCon tutorial. IEEE # 75CH1050-4. Also reprinted in Rein Turn, editor. Advances in Computer System Security. ArTech House, Dedham, MA, 1981, pages 105-135. ISBN 0-89006-096-7 Also reprinted in Marvin S. Levin, Steven B. Lipner, and Paul A. Karger. Protecting Data & Information: A Workshop in Computer & Data Security. Digital Equipment Corporation, 1982. This paper was originally prepared off-line. In 1997, Norman Hardy kindly rendered it into World-Wide Web form. here
- Van Jacobson and Michael J. Karels Congestion Avoidance and Control. SIGCOMM, 1988
- J.H. Saltzer, D.P. Reed and D.D. Clark, End-to-end Arguments in System Design, ACM Transactions on Computer Systems, Nov 1984, p. 277-288
- Jeffrey C. Mogul The Case for Persistent-Connection HTTP. In Proceedings of ACM Sigcomm '95, pp. 299-313, Cambridge, MA, August 1995
Maybe someone else will have better luck tracking down a link to Mogul's paper.If you want a mind bender, there is always On the Duality of Operating System Structures. But if you want something a little more practical, I'd recommend Eliminating Receive Livelock in an Interrupt-Driven Kernel or The End to End Argument in System Design.
You have to register to get most papers from ACM (the Association for Computing Machinery who published "GOTO considered harmful"). However, the full text can be found free in their classics series.
Everybody should read this paper, then read Linus Torvalds et. al. discussing the matter on kernaltrap.org
foo mane padme hum
As a PhD student, I often have to look for papers in the computer science field ; and very often, CiteSeer yields better results - or, rather, different results, but with a very good cross-referencing system. You can directly jump to the other papers cited by the paper you're reading, and you can see which papers did cite it, too.
The URL :
http://citeseer.nj.nec.com/cs
That said, I often find very interesting ideas in scientific papers, but sometimes things can't be implemented with current technology (I'm still talking about computer science domain, since that's what I know), or sometimes, the good idea in the paper is obsoleted a few years later.
For instance, I remember a scheduling algorithm to read disk blocks in a Video-On-Demand server : it was maybe very clever when it was written, when they had to feed 155 Mbps with a computer having 16 MB of RAM, but today, you have maybe 10 times more throughput, but 100 times more RAM - so you can use simpler, memory-hungry, buffering methods.
The problem is, that it's difficult (IMHO) to say "OK, this paper is theoretically interesting, but we can't implement this today, BUT we will probably be able to do it in a few (dozen) years", because you don't know what will and won't evolve (in my previous example, it was easy to predict that network bandwidth and memory size would increase, but it was maybe harder to guess that MPEG4 and DivX would allow the bitrate of a video stream to stay low...)
just because I'm bored "why not \." simple the backward slash is only used by the backward company microsoft. All true operating systems use the forward slash / it is easier to get to on the keyboard and makes life easier as it is now standard. now to see if anyone bites
i thought once I was found, but it was only a dream.
Check out the Networked Computer Science Technical Reference Library.
- Hubert
I hate to burst your bubble after all the effort that you went through, but ... From your description, your Dad's company is nowhere near out of the woods yet.
In order to invalidate a patent, the prior art must no only describe an invention, but also be "enabling" in it's description (either standing alone or in combination with other prior art). Most conference proceeding consist of a title and/or abstract, neither of which normally contains sufficient information to teach how to make and use the invention (i.e., is "enabling"). A mere mention of the concept does not make for invalidating prior art. In almost every case such as this you also need additional prior art and testimony of the speaker at the conference (and possibly those attending).
And, if you are relying on testimony, the (enabled) invention must be proven to have been "known or used by others" (35 USC 102(a)), or "on sale or in public use" (35 USC 102(b)) ... "in this country" . 35 USC 102. Unfortunately, testimony corroborating oral disclosure in a foreign country doesn't do the trick.
Since nobody who seems to have actually read any computer science papers has posted, here are two that immediately come to my mind.
:)
Vannevar Bush. As We May Think. Atlantic Monthly, July, 1945.
This paper put forth the very first ideas about how people can mechanically search for information. While we don't have desks with levers on them, we do have Google.
Tim Berners Lee. Information Management: A Proposal. 1989.
This paper is where Tim Berners Lee proposes what we now know as the world wide web. It's an interesting read if you'd like to see what the original intent of the web was so that you can compare it to what we have today.
A place to look for good old computer science papers is in older issues of Communications of the ACM. There are lots of articles in plain English that you may find of interest. If you are a university student, your school may have a subscription to the ACM Digital Library. If they do, you can read all the issues back to 1958.
Also, you can find a lot of interesting CS publications at Citeseer. They have a page with the top 200 most accessed papers of all times. When I skimmed through it, I saw quite a few titles that may be of interest.
(those who feel left out should immediately report to me or the nearest AC; they will be duly noted in the next edition of this post)
Hell is not other people; it is yourself. - Ludwig Wittgenstein
Shannon's 1948 paper, "A Mathematical Theory of Communication", the seminal work on information theory and coding.
Qu'on me donne six lignes écrites de la main du plus honnête homme, j'y trouverai de quoi le faire pendre.
I'm learning to read classical Greek so that I may read Euripides.
An admirable exercise.
Journalist I.F. Stone, rather late in life, taught himself ancient Greek, in order to read the actual source documents relating to the trial and execution of Socrates.
No translation would suffice: Stone felt that only by reading the original text for himself could he arrive at the insight he desired.
-kgj
-kgj
MIT Open Courseware These are not whitepapers and the like. Rather, they are mostly lecture notes from the professors who teach the classes there - Enjoy!
p.s. - Check out the link in my earlier post
This is the paper by Diffie and Hellman that originated public-key cryptography. This paper explained for the first time (in an unclassified place) how two parties could communicate privately over an open channel without previously agreeing on a secret key. Every time your browser says, "Setting up a secure connection..." when you order from Amazon or check your bank account, you're witnessing the impact of this work.
Well, maybe I just wanted to whore my favourite paper.
xxx
In CS, conference proceedings generally include full texts of the papers. Often conference papers will be a general description of an idea and how it was implemented in a system, with references that include a technical report or someone's thesis with more details about the ideas and implementation. I'm not disagreeing that to prove prior art more may be required than old papers.
In the section titled GENERIC STRUCTURE, HIERARCHIES , Sutherland describes how he restructured SKETCHPAD in what we would immediately recognize as an OO manner:
Later in the section DEMONSTRATIVE LANGUAGE we see what we might call today the association of classes with methods as Sutherland notes:
The Grid: Blueprint for a New Computing Infrastructure by Dr. Ian Foster of Argonne National Laboratory and the University of Chicago, and Dr. Carl Kesselman of the Information Sciences Institute and the University of Southern California.
Morgan Kaufmann, San Francisco; 1999.
Lamport, Leslie. "Time, Clocks, and the Ordering of Events in a Distributed System", pps. 558-565, CACM, Vol. 21, No. 7, July, 1978
Parnas, David. "On the Criteria To Be Used in Decomposing Systems into Modules", pps. 1053-1058, CACM, Vol. 15, No. 12, December, 1972
Hester, S.D, Parnas, D.L., and Utter, D.F. "Using Documentation as a Software Design Medium", pps. 1942-1977, The Bell System Technical Journal, October, 1981
Parnas, David L. and Clements, Paul C. "A Rational Design Process: How and Why to Fake It", Presented at the Tapsoft Joint Conference on Theory and Practice of Software Development, Berlin, March, 1985
And one more(I know this guy, and I had to read this for a class, so I figured I'd give him some props..) Wheeler, Tom. Software System Development Through The Use of Formal Documentation, Ch. 2 (System Documentation), PhD. Thesis, Steven's Institute of Technology 1988
Let me quibble with you a bit.
There are no details to "give away". The knowledge isn't a secret.
I'm reminded of Robert Heinlein's book Starman Jones, where guilds, using Intellectual Property laws, had made all scientific and technical knowledge proprietary (much as guilds did in the Middle Ages).
Fortunately, in our world, we are moving away from that model. Scientific and technical knowledge is available to anyone with the tenacity and aptitude to learn it.
Certainly, all the knowledge to be learned in an introductory Computer Science course is available -- free -- on the web. For other disciplines, there's still the cost of $100 textbooks -- but more and more free alternatives are becoming available.
- The Wikipedia project has spun off the Wikibooks, the free textbook project.
- MIT offers the OpenCourseWare initiative
- the venerable Project Gutenberg offers e-texts of public domain books
- The University of Pennsylvania complements Gutenberg with the Online Books Page
- and numerous other authors, universities, and organizations are jumping on the bandwagon
And that's not even mentioning all the free and open software (even a whole OS!) out there to use as examples.What's lacking is not the knowledge, or the software; what's lacking are tutors able to explain the tough bits, smooth the rough bits, and challenge their students to make the knowledge their own. Somebody to demonstrate adding a node to a linked list to the puzzled; someone to review the basic math for those of us (like me) who got a bit intimidated by Big O notation. that's the next problem, and the problem I want to address.
But the knowledge is a click away -- and no Sphinx is guarding any "secrets".
Opinions on the Twiddler2 hand-held keyboard?
How about the Steele and Sussman "Lambda the Ultimate" MIT AI Lab tech reports. Very influential. Sadly, I don't know if anyone's put them on the web. And, of course, there's the repository of Dijkstra's stuff....
It talks about software quality and testing -- which seem very applicable, if not entirely in sync with, recent ideas about agile programming, test-driven-development, etc.
I think you mean "The Calculi of Lambda Conversion" , or are they two different things?
Gee I dunno, maybe the fact that he was put on trial for homosexuality, found guilty, and forced to take hormone treatments instead of a prision sentence? Simple google search on his hame would bring up plenty of evidence, or you could try looking for a biography in your local library. From what I've read he was quite open about it, which is why the trial came about in 1952 or so.
Introducing the new Occam Fusion! Now with sqrt(-1) fewer blades!
For instance, he has the very first mouse, a word processor with cut, copy, paste, embedded graphics (remember how cool OLE seemed to be?), hyper-linking (remember how cool hypercard seemed to be?), embedded levels of text (kind of like looking at a hyper-linked table of contents in a book), multi-handed interface, a piece of groupware that allows him and a distant co-worker to work together in the same application (think collaborative real-time modification of the same document -- something we still don't really have), telepointers (graphical representation of other people's mouse pointers), embedded video (think webcam), and the list goes on and on and on.
When you think about the fact that this was done in the 1960's, you really begin to wonder, "what the hell have we been doing since then!?"
http://www.cs.bell-labs.com/who/rob/
:
be sure to catch "Systems Software Research is Irrelevant"
You will probably see a lot worse links than
Bell Labs - formerly known as heaven.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
Later surpassed by "Plan 9 from Bell-Labs", which distills the ideas from UNIX and improves in many areas it lacked:
t ml
Plan 9 from Bell-Labs
Somebody else mentioned Rob Pike already, pity you can't find any of his older (pre-Plan 9) papers online anymore: "The Hideous Name" and "Cat -v Considered Harmful":
R. Pike, P. Weinberger, "The Hideous Name" USENIX Summer 1985, pp 563-568.
and an abstract of the other: http://gaul.org/files/cat_-v_considered_harmful.h
As for history repeating itself, let me quote Ron Minnich:
You want to make your way in the CS field? Simple. Calculate rough time of amnesia (hell, 10 years is plenty, probably 10 months is plenty), go to the dusty archives, dig out something fun, and go for it. It's worked for many people, and it can work for you.
...you must sometimes also seek mediocrity.
Learn from other people's mistakes by pointing your newsgroup reader to comp.risks and reading the digests religiously.
Alan Borning proposed a neato object system where relationships among objects (it's prototype based) was handled by "inheritance constraints," a sort of super-flexible inheritance cum delegation scheme. See this page for Classes versus Prototypes in Object-Oriented Languages.
In the great CONS chain of life, you can either be the CAR or be in the CDR.
- Codd: "A Relational Model of Data for Large Shared Data Banks"
- Dijkstra: "Go To Statement Considered Harmful"
- Dijkstra: "Appendix of The Structure of the "THE"-Multiprogramming System"
- Hoare: "Monitors: An Operating System Structuring Concept"
- Metcalfe & Boggs: "Ethernet: Distributed Packet Switching for Local Computer Networks"
- Parnas: "On the Criteria to be Used in Decomposing Systems into Modules"
- Thompson: "Reflections on Trusting Trust"
- Wirth: "Program Development by Stepwise Refinement"
Of course, the ACM Digital Library contains the "[f]ull text of every article ever published by ACM", but only for paying subscribers ($198/year). An organization that considers itself to be "a major force in advancing the skills of information technology professionals and students worldwide" should be trying to get information into circulation, not trying to squeeze publications fees out of the practioners of the field.Sounds like the sort of problem that a system like CanonicalTomes would be good for. Canonical tomes is for books. Anyone up for making a similar site for "canonical papers"?
Interestingly enough, the Luftwaffe was very careful with its settings documents and its discipline for changing rotors. Bletchley Park never solved the Luftwaffe version of Enigma.
What a bunch of bullox! The following are excerpted from "The Ultra Secret" which was written by F. W. Winterbotham who worked closely with Allen Turing and the rest of his team at Bletchly Park throughout the war.
"Although the well-guarded Kriegsmarine messages could not be deciphered, BP was regularly eavesdropping on the Luftwaffe. The Luftwaffe was particularly negligent in applying appropriate safeguards to their Enigma-coded messages, perhaps due to a measure of arrogance evident in World War II "fly-boys." Through this source the British were able to piece together Hitler's plans for the cross-channel invasion, dubbed Seelowe (Sealion). Before it could be accomplished, the RAF would have to be neutralized. Warned beforehand of Luftwaffe bombing raids on airfields, designed to eliminate not only the fields themselves but also destroy RAF fighters on the ground, British planes were able to avoid being caught as sitting ducks. Although Ultra intelligence forewarned of impending attacks, coastal radar (underestimated by the Germans) was able to pinpoint flights of incoming enemy planes."
"The British were regularly reading Luftwaffe messages, Of particular interest were messages from the Fliegerverbindungoffiziere, or "Flivos", liaison officers responsible for coordinating air and ground operations The all important Kriegsmarine signals ("Dolphin") were still a mystery. U-33, on a mission to sow mines in the Firth of Clyde, was depth charged and forced to the surface on Feb 12, 1940 by minesweeper HMS Gleaner."
"One of the first relied on German operators using some easily remembered sequence of letters as rotor starting positions. There were identified as "Cillies", after one operator who frequently used "Cilly", his girlfriend's name."
Obviously you were misinformed about your chosen subject. The Kriegsmarine messages were the really tough ones to crack because they were disciplined about transmission lengths, randomized key rotor selections for each message, and distribution of code books which contained the key sequences that would be used in a particular month. By comparison the Luftwaffe operators used their girlfriend's initials as rotor settings and changed keys only infrequently.
Here is a neat site that I found (yep, using Google):
Great Papers in Computer Science:
http://bit.csc.lsu.edu/~chen/GreatPapers.html
I kept trying to put the TOC from the site in this comment, but Slashdot kept saying that the line length was too short. Since it was just plain text, I do not understand what was going on with that. So sorry, but the link really is worth checking out. Good reading!
The Bletchley Park (HQ for UK cryptintelligence work during WWII) operation and assorted activities to capture and feed information to it involved thousands of people (I think I have seen numbers of 5000 for the HQ operations alone). Turing was extremely important in this work, especially in the earlier part of the war. However, many others contributed - for instance, it was Polish intelligence that broke the first versions of the Enigma cipher machine, even before WWII started.
Espen
http://john.regehr.org/reading_list/