Supported browsers

Chrome 4.0 Firefox 3.6

Recommendations

for enthusiastic programmers

This page contains references to texts or videos that I consider profound or rather inspiring. You probably will find it interesting if you devote most of your time dwelling on matters of programming.

I intend to keep the quality of references high but also omit papers that are too specialized. There is a more suitable site for those, i.e. check out Lambda the Ultimate.

I've also gathered more advanced or odd online references to another page.

Suggestions of any kind are appreciated: henrik.huttunen@gmail.com

Highly recommended

Are We There Yet? Rich Hickey

Hickey discusses the problem of objects with philosophical flavor. He then proposes profoundly different approach to tackle the issues of state, identity, values and time. After watching the video, you might be curious to know that the implementation of this strategy is the basis of Clojure the language.

The video on InfoQ
Structure and Interpretation of Computer Programs Harold Abelson, Gerald J. Sussman

The most important book on the subject of building software with proper abstractions.

Out of the Tar Pit Ben Moseley, Peter Marks

About incidental and essential complexity of software.

The article

Important

Mythical Man-Month: Essays on Software Engineering Fred Brooks

Insights on the big picture of software creation.

Link
Why Functional Programming Matters John Hughes

Modularity is a key element to succesful programming. Hughes explains with examples how higher order functions and laziness help us to glue reusable parts into modular programs.

The article
Concepts, Techniques, and Models of Computer Programming Peter van Roy, Seif Haridi

Discusses different paradigms of programming, and the concepts underlying them. Examples are in Mozart/Oz language.

The book's homepage
Scalable Component Abstractions Martin Odersky, Matthias Zenger

Component-oriented programming language abstractions that make writing software scalable. Examples are in Scala.

The article

Inspiring

Your Brain at Work David Rock

How to be effective in work environment.

Mathematician's Lament Paul Lockhart

What's wrong with the teaching system of mathematics. Indirectly gives some insights on the education of computer science.

The article
Coders at Work: Reflections on the Craft of Programming Peter Seibel

Interviews of highly skilled and experienced programmers. Get the feel for important issues of current industry and be inspired by how experts approach writing software.

The book's homepage
Lila: an Inquiry into Morals Robert M. Pirsig

Tries to answer what quality is universally, and how it relates to subject and object in a metaphysical system.

Link
Genius: The Life and Science of Richard Feynman James Gleick

Richard Feynman was a phenomenal individual. Just by reading the tales of his talent and unique personality boosts one's energy up to continue daily struggle in hope of better future.

Link
Growing a Language Guy Steele

Guy Steele talks about the importance of growing a language by demonstrating it as he speaks, literally.

Gödel, Escher, Bach Douglas R. Hofstadter

The power of self-reference and Gödel's incompleteness theorems partly in disguise of wonderful stories. [No recursion jokes here].

Link

Pragmatic

Real World Haskell Bryan O'Sullivan, Don Stewart, and John Goerzen

Most of the Haskell's features discussed with practicality in mind.

Free online version of the book
Javascript: The Good Parts Douglas Crockford

Javascript is essential in current industry. Douglas shows what subset of Javascript is vital for writing elegant code.

Publisher's page
Artificial Intelligence: A Modern Approach Stuart Russell, Peter Norvig

Agent based approach to AI.

The book's homepage
Effective Java (2nd ed.) Joshua Bloch

Crucial Java idioms in compact form.

The book's homepage
Clean Code Robert C. Martin

How to write readable code.

Link

Theoretical

Object-oriented Pattern Matching Burak Emir

Pattern matching in Object-oriented context presented with two constructs: case classes and extractors.

Thesis's page

Introductory

How to Solve It: Modern Heuristics Zbigniew Michalewicz, David B. Fogel

Strategies how to solve computational problems.

Link
Taste of Haskell Simon Peyton-Jones

Passionate Peyton-Jones gives a tour of Haskell.

Link
Learn you a Haskell Miran Lipovača

Nicely illustrated, comprehensible Haskell tutorial.

The tutorial

Non-classified

The following have not been classified yet but are suitable candidates to be included.

How to Design Programs Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi

The book available online

Programming Paradigms for Dummies: What Every Programmer Should Know Peter van Roy

The article

Inside Clojure Rich Hickey, Brian Beckman

Beckman interviews Hickey on Clojure.

The video on MSDN