Classic CS Texts

After reading the latest "Classic Papers" discussion, I thought I'd make a short list of important and enjoyable papers. Have a look and tell me if I missed some important ones.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Descent start...

I especially like that you included the Jack Crenshaw Let's Build a Compiler articles.

For me, at least, it was the wedge that cracked open the rest of the wide field of programming languages. Certainly not the most intensive theory, but its clearly written and did not leave out important details.

This sort of stuff would be great to put on a LtU wiki... I know, I know, its in the works :).


I hope we are able to do the Drupal upgrade very soon. Once the new version is stable, we'll focus on getting the LtU-opedia up and running.

Let's Build a Compiler, redux

Alas, Let's Build a Compiler is looking a little dated. Turbo Pascal and the 6502 processor are like ... y'know ... so 5 minutes ago.

Nonetheless, I'd really like to work through that tutorial -- or something similar -- so that I can become as clever as Matt Estes.

Does anybody have any ideas or suggestions? A more up-to-date Let's Build a Compiler would be great, or, failing that, some hints and tips on how to port Let's Build A Compiler to C/Haskell/Java, GNU Linux and an Intel processor would be much appreciated.

I didn't think I was particul

I didn't think I was particularly clever :). Actually, I figured by starting with something so non theoretic and syntax oriented as that revealed my status as an unwashed heathen.

I came at PLT stuff via syntax(someone who was clever has declared "syntax is the Vietnam of programming languages"). As an introduction to understanding BNF, parsing, and recursive descent parsing, it really helped me out. Parsing Techniques: A Practical Guide and my masters thesis finally cured me of syntax issues :).

As to porting/updating it, I think I've seen a C version of the code somewhere(which might have updated the assembly to x86 as well). Still, I never learned Pascal, but its pretty easy to read it and get the hang of it. Porting it to x86 assembly shouldn't be too hard, and could be done with minimal knowledge of assembly language(you could always fprintf the assembly output and rely on an assembler like NASM).

You might want to read this thread and check out the Tiny Basic interpreter, since it definitely has been reimplemented in C.

Tiny Basic

check out the Tiny Basic interpreter

That sure brings back memories. The Tiny Basic Experimenter's kit was my first big dive into how to implement programming languages, in the good old days of the Netronics Elf II. It's nice to see Tom Pittman is still around.

A couple more papers

Here are couple of ideas. I collected papers for a course based on historical papers in CS, but I don't have it in front of me at the moment...

On Computing Machinery and Intelligence by Turing is the text that established AI, and defined the Turing Test.

Hoare's papers on proving FIND and Quiksort are also worth checking out.

Lamport should also be on the list.


You have two C. A. R. Hoare papers, but not Communicating Sequential Processes!

way cool! thanks for the lin

way cool! thanks for the link!


I just read "Hints on Programming Language Design" from your link and I found the idea of letting programmers declare the units that they're using so the compiler can confirm they're not making mistakes like adding feet to meters simply awesome. After all, it cost my government several billion dollars on the mars lander :P

I wouldn't obligate programmers to use the feature of course, but it certainly would make the creation of DSLs easier/safer.

Have any languages actually tried it? I haven't seen any yet.

Fortress is doing it, but for

Fortress is doing it, but fortress is still in development..


Though Frink is not open source, last I checked.

Javascript bibliography

Waldemar Howat's Javascript bibliography has a lot of great programming language links.