Digital Libraries
- Internet Book List Like the Internet Movie Database, except for books. Aims to be a comprehensive listing of books.
- IMDB Internet Movie Database, if you want to know about a movie, start here.
- Project Mutopia - Mutopia is a much more recent effort, but is basically the Project Gutenberg of sheet music. You want Bach or Beethoven? They probably have it. Again, copyright law hurts their efforts as well.
- Nupedia - These guys are trying to build an open, free, peer-reviewed Encyclopedia. Anyone is free to contribute an article, and they attempt to get multiple experts in related fields to review the article for accuracy. A very recent effort(1-2 years old), so not a lot there yet, but they are making progress.
- Wikipedia - I think this is an extension of Nupedia. Anyway, its made using a Wiki Wiki(Hawaiian for "quick"), a very unique kind of collaboration/content manage system software.
- Ibiblio - The internet's "public library". They are home to several library oriented projects, lots of information, and help other projects(such as Project Gutenberg) with some of their needs to keep information available. A side note, this project is housed at the University of North Carolina. So close to home.
- Baen Free Library - A commercial publisher of sci-fi and fantasy has been running a multiyear experiment allowing its authors to publish their old, out-of-print works to their website. They have found that its actually been increasing sales by allowing people to experiment with relatively lesser known authors and their older works(the books are not protected or encrypted at all, just free to download).
- Digital Atheneum Project - A project to keep high resolution digital images of original manuscripts in a library and allow scholars to translate and markup those documents without having to go the places those works are actually kept. Has things like Beowulf manuscripts and other interesting things. Also, this project is at the University of Kentucky.
- Web Museum: Famous Paintings - A somewhat abandoned project that put digital images of paintings in the Louvre online. Still available(housed at Ibiblio) and still has lots of information on the artists and works it does have.
- The Assayer - These guys are running an "open book review site". They concentrate more on textbooks and technical texts, and they are trying to do reviews of books, but they also link to electronic copies of books when available, and so its a pretty valuable resource for finding free textbooks and such as well.
- Internet Archive - These guys are attempting to make "backup copies" of the ENTIRE INTERNET every so often(a couple of months), they have the "Wayback Machine", which lets you view a webpage as it might have appeared long ago(like say Microsoft's first attempt at a website...). They also host the Internet Moving Picture Archive, which puts up public domain copies of movies(mostly government films and commercials, there is much less available here, so its a hodgepodge of what they can get their hands on). Lots of interesting things here.
- Encyclopedia Mythica - World mythology, folklore, and legends. Tries to be comprehensive, pretty much every culture you've heard of, and lots you haven't. Not as in depth(currently) as say, Edith Hamilton's Mythology, but covers a much broader range of mythologies.
- Textfiles.com - Everyone's heard of the "The Terrorist Handbook", and "The Anarchist Cookbook". These things are almost more jokes than anything real, but they came from the "Bulletin Board" culture that predates the public internet. People dialed up computers and played games, downloaded files, and chatted with other people. These were all over the country, and formed small communities and nationwide networks. Lots of those files were "texts" about various things. This is more of an anthropological effort to catalog all these things before they disappear. You will probably find some common "joke files" forwarded around the internet.
- Eric Weisstein's World of Mathematics - A good site with descriptions of just about every field of mathematics and enough stuff to go further in-depth in a lot of them.
- Citeseer - If you're looking for Computer Science research papers, this is the first stop. Among other things, lets you follow links to papers that cite the papers you find(very nice to find out where some research has gone). Very good source. Also has the full-text of the vast majority of papers in its database. Oh yeah, unlike the ACM Digital Library, this is a totally free resource. Of course, students at Tennessee Tech University have free access to the entire library(at least on campus, the off campus facilities never seem to work for me...)
- The Newton Project - A project to create XML versions of all of Newton's works, and the margin notes of works in his private library, as well as scans of the originals.
Project Gutenberg
Return to top- Project Gutenberg - One of the original e-text projects(they started in the 1970's). They take public domain works and convert them to "machine readable formats". Over 4000 books are in their collection. They have the complete works of William Shakespeare, the King James Bible, and even the Human Genome Project database. Currently, their biggest impediment to making "everything ever printed" available is probably copyright law which extends back to 1923 as a rough estimate for most works.
- Distributed Proofreading - This is a side effort called "Distributed Proofreading". People scan pages of books into picture files, and allow anyone on the internet to come by and proof a single page to help speed up the process of converting books to e-texts.
Technical Library
Return to topBooks and papers about technical fields. Includes philosophical and historical works as well as informational works.
- Artificial Intelligence
- Computability Theory
- Computer Philosophy, History, and Legal
- Databases
- Electrical Engineering
- Graphics
- Human Computer Interaction
- Information Theory, Cryptography, and Telecommunications<
- Magazines
- Mathematics and Numerical Methods
- Parsing
- People
- Physics and Engineering
- Programming("Trade Books")
- Programming Languages
- Software Engineering and Operating Systems
Graphics
- Smooth, Easy to Compute Interpolating Splines by John Hobby
Computer Graphics: Principles and Practice, by Foley, van Dam, et. al.
- Graphics Programming Black Book, by Michael Abrash
Artificial Intelligence
- Computing Machinery and Intelligence - The paper in which the "Turing Test" for Artificial Intelligence originated. Has some other goodies as well.
Human Computer Interaction
- The Macintosh Human Interface Guidelines
- The Anti-Mac, by Nielson, et. al.
- The Myth of the Paperless Office by Sellen and Harper
Electrical Engineering
- Stack Computers: The New Wave - A book published in 1989, poised on the revival of Stack Computers(which, um, never came... probably explains why the book is now free on the web :). Actually, stack computing is a very interesting idea. I won't claim that it should supplant our current architectures, but I do think it has some things to teach us. If nothing else, I personally think the "two stack" model(a control stack, separate from the data stack) is a much better tool for compiling and executing programs. If nothing else, buffer overflow problems are greatly reduced and mostly eliminated(after all, if smash the data stack, you may cause a program error, but at least flow control, and thus exception processing, is likely to be unaffected). Its worth reading, and hey, its free.
- Computer Aids for VLSI Design, by Steven M. Rubin. I haven't read this yet, but I am definitely interested in chip design, via automated tools, and the previous proclaims this book is for the "VLSI designer who would like to develop better design tools.", which I suppose I count as one. The copyright is 1994.
- The PIC Microcontroller: Book 1, by Nebojsa Matic. I haven't read it, but it seems like a fairly complete book on PIC's.
- Lessons In Electric Circuits, by Tony R. Kuphaldt. I haven't looked too much at these, but a physics teacher on The Assayer gave it a good review. Sounds like a good introduction for someone interested in an Engineering approach to the topic.
- Design of VLSI Systems
Physics and Engineering
- How to Design, Build and Test Small Liquid-fuel Rocekt Engines, by Leroy J. Krzycki. More like a good way to blow something up, or lose a hand, or an eye, or other important limb. Sounds like fun.
- Light and Matter, by Ben Crowell. A free series of introductory textbooks on general physics.
Information Theory, Cryptography, and Telecommunications
- A Mathematical Theory of Communication, by Claude Shannon. This is the paper that founded modern information theory. The mathematical background is also not too dense(someone with calculus and statistics course could handle it). Its very readable and entertaining paper.
- Communication Theory of Secrecy Systems, by Claude E. Shannon, Bell System Technical Journal, vol.28-4, page 656--715, 1949. An important paper by Shannon regarding principles of cryptographic systems.
- Applied Cryptography: Protocols, Algorithms, and Source Code in C, by Bruce Schneier
- Handbook of Applied Cryptography, by Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone
Mathematics and Numerical Methods
- What Every Computer Scientist Should Know About Floating-Point Arithmetic, by David Goldberg. A good paper about the basics of floating point math and the problems involved with doing accurate computations.
- Numerical Recipes - Odd situation. The book comes in two flavors, on in C and the other in Fortran 77. The thing is, while you can get the book FREE online(both versions), you have to pay for the source code. Its a good book, both as a reference and tutorial.
- Elements, by Euclid.
- Abstract Algebra, by J. S. Milne.
- Abstract Algebra, by David R. Wilkins
- Complex Analysis, by George Cain
- The Mathematical Papers of Georg Friedrich Bernhard Riemann (1826-1866), transcribed by David R. Wilkins.
- The Engineer's Ultimate Guide to Wavelet Analysis: The Wavelet Tutorial, by Robi Polikar. A decent introduction to Wavelets, helps if you already understand Fourier or Laplace transforms.
- A Really Friendly Guide To Wavelets, by C. Valens. Of the two, I find this one to be more insightful and useful. It gets down to practicalities and looks to have more directly usable information.
- The Scientist and Engineer's Guide to Digital Signal Processing, by Steven W. Smith. I haven't read this, but the table of contents looks to cover the highlights, so its probably okay. As always, probably helps if you've seen stuff like a Fourier transform before or had an introductory class in Telecommunications.
- Graph Theory, Second Edition, by Reinhard Diestel. A free graph theory text book available online.
Databases
- A Relational Model of Data for Large Shared Data Banks - The original paper by E.F.Codd which introduced the "Relational Model" which is the underlying theory behind modern database systems.
Software Engineering and Operating Systems
The Mythical Man-Month: Essays on Software Engineering, by Fred Brooks
- In Pursuit of Simplicity: the manuscripts of Edsger W. Dijkstra - Dijkstra was one of the greats of Computer Science. He died in August of 2002. He published a whole lot(including the infamous "Goto Considered Harmful" article, but he wrote a whole lot more that wasn't published. This site is an attempt to move copies of all his works, published or not into one comprehensive online repository.
- Reflections on Trusting Trust - A classic paper on the problem of how to decide whether to trust a computer system, including a novel discussion of "quining" programs(self-reproducing programs, but different from a virus) can be used to hijack a system, even once the bug has be cleared from the source code.
- The UNIX Time-Sharing System - Basically, the paper that introduced Unix to the world.
- The Art of Unix Programming, by Eric S. Raymond.
- Design and Validation of Computer Protocols, by Gerald J. Holzmann
- How to Design Programs: An Introduction to Programming and Computing, by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
Programming("Trade Books")
- Programming Windows, Fifth Edition, by Charles Petzold. A fine example of technical writing, whether you like Windows or not. The reference book if you're going to write code for Windows in C.
- Hacker's Delight, by Warren
Computability Theory
- Recursive Functions of Symbolic Expressions and Their Computation by Machine(Part I) - The original paper on Lisp.
- Communicating Sequential Processes, by Tony Hoare. This book is about a concurrency model developed by Tony Hoare, and its also the basis for concurrency in the language Erlang. This model is interesting because it is based on message passing and NOT based on shared state, and hence, is free from many kinds of deadlock issues and other traditional evils of concurrent programming. The message passing model is nice because it is immediately understandable to programmers without much theoretical work.
Parsing and Compiler Construction
- Let's Build a Compiler, by Jack Crenshaw. A very good introduction to parsing if all this theory gets to you. It will also lead you to a place where you can start reading a real work. I really recommend this as a basic introduction, especially for those who are impatient and want to write code as soon as possible.
- Parsing Techniques: A Practical Guide, by Grune, et. al.
- Recursive Adaptable Grammars, by John Shutt
- Modern Compiler Design, by Grune, et. al.
- Compiler Construction using Flex and Bison, by Anthony Aaby. I haven't read this, but I've never been a huge fan of Lex and Yacc(or Flex and Bison for that matter), but it could just be because I can't seem to make them do what I want. Anyway, this is probably a good start to figuring out how to use them. I'll probably give it a good read next time I go to wrangle with them. Anyway, enjoy.
Programming Languages
- Concepts, Techniques, and Models of Computer Programming, by Peter van Roy and Seif Haridi
- CS173 Course Notes - Brown University - Some lecture notes about programming languages, by Shriram Krishnamurthi.
- Programming Languages: Application and Interpretation, by Shriram Krishnamurthi. Another one, a little different from the other set of notes I think.
- Introduction to Programming Languages, by Anthony A. Aaby. Another programming languages book.
- Advanced Programming Language Design, by Raphael Finkel. Its a decent book, but its somewhat lacking theoretically. Here's a review on Lambda the Ultimate.
- Syntax and Semantics of Programming Languages, by Kenneth Slonneger, Barry L. Kurtz.
- Common Lisp the Language, by Guy L. Steele
- On Lisp, by Paul Graham
- Structure and Interpretation of Computer Programs, by Harold Abelson, Gerald Jay Sussman. The famous introduction to programming in Scheme, used in introductory programming courses at MIT.
- Free Books on Smalltalk. This guy has collected out of print books and articles on Smalltalk and released them on the web(with permission of course).
Computer Philosophy, History, and Legal
- Difference Engine: Charles Babbage and the Quest to Build the First Computer, by Doron Swade
- Godel Escher Bach: An Eternal Golden Braid, by Douglas Hofstadter
- Secrets and Lies: Digital Security in a Networked World, by Bruce Schneier
- Future of Ideas: The Fate of the Commons in a Connected World, by Lawrence Lessig
- Code and Other Laws of Cyberspace, by Lawrence Lessig
- Copyrights and Copywrongs: The Rise of Intellectual Property and how It Threatens Creativity, Siva Vaidhyanathan
- The Cathedral and the Bazaar, by Eric S. Raymond. A study of the phenomena of Open Source and Free Software.
- Hacker Crackdown, by Bruce Sterling. A non-fictional account of the crackdown on computer crimes, and the irrational fears and behaviours that went with it, during the 1980's.
- Unskilled and Unaware of It: How Difficulties in Recognizing One's Own Incompetence Lead to Inflated Self-Assessments, by Justin Kruger and David Dunning. The chief problem with incompetence, is those who aren't competent are least aware of it.
People
- D.J. Bernstein
- Christopher Browne
- Steve Dekorte
- Edsger W. Dijkstra - One of the most famous computer scientists. Wrote the infamous Go To Statement Considered Harmful and lots of interesting work on algorithms, programming languages, and other fundamentals of computer science. Died August 6th, 2002.
- Richard Gabriel - A computer scientist and Lisp hacker. One of his more famous essays, Worse is Better considers the many issues of the success and failure of software.
- Paul Graham
- Phillip Greenspun
- Tony Hoare - Programming Language researcher, winner of 1980 Turing Award(The Emperor's Old Clothes), and created the Communicating Sequential Processes paradigm of concurrency.
- John Hobby - The creator of the Metapost language, and several nice graphics algorithms.
- Simon Peyton Jones
- Brian Kernighan also at here. The "K" in "K&R C". One of the coinventors of Unix and the programming language C.
- Donald Knuth - Author of the (incomplete) work, The Art of Computer Programming, pretty much a comprehensive look at algorithms and fundamentals of computer science. Invented Attribute Grammars, LR parsing, Literate Programming, and TeX among other important works. Dr. Fun's take on Knuth.
- Shriram Krishnamurthi
- John McCarthy - The inventor of Lisp, AI researcher, and important work in computabiltiy theory. Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I) is the original paper on Lisp.
- Bruce Perens
- Eric S. Raymond
- Dennis M. Ritchie - The "R" in "K&R C". One of the coinventors of Unix and the C programming language.
- Bruce Schneier
- Clay Shirky
- Olin Shivers
- Joel Spolsky
- Richard Stallman
- Ken Thompson
- Jeff Ullman - One of the authors of the Dragon book on compiler design.
- Steve Wozniak - The Brains behind the Apple II and other wonders. Perhaps the coolest, greatest, and nicest hacker of all time. Also check out his company Wheels of Zeus.
- Jamie Zawinski
Magazines
- 2600
- Advogato
- Ask Tog
- Crypto-Gram, by Bruce Schneier
- Cryptome, homepage of Crypto Anarchists everywhere.
- Dr. Dobbs Journal
- The Encoder, newsletter of the Seattle Robotics Society(published on a "when we have enough" schedule).
- First Monday
- Gamasutra, online counterpart to Game Developer Monthly.
- GameDev
- I, Cringely
- Journal of Game Development
- Journal of Object Technology
- Lambda the Ultimate
- Ongoing
- Phrack
- Places to Go, People to Be
- Progressive
- Skotos, MUD's and RPG's.
- Slashdot.org
- Use It: Alertbox, by Jakob Nielson, bimonthly articles on usability.
- Wired