É possível que o software não seja como nada mais, que ele seja feito para ser descartado: que o ponto principal seja sempre vê-lo como uma bolha de sabão?
—Alan J. Perlis
O material deste livro tem sido a base da disciplina introdutória de ciência da computação do MIT desde 1980. Estávamos ensinando este material há quatro anos quando a primeira edição foi publicada, e mais doze anos se passaram até o lançamento desta segunda edição. Estamos felizes que nosso trabalho tenha sido amplamente adotado e incorporado em outros textos. Vimos nossos alunos pegar as ideias e programas deste livro e construí-los como o núcleo de novos sistemas e linguagens de computação. Em uma realização literal de um antigo trocadilho talmúdico, nossos alunos se tornaram nossos construtores. Temos a sorte de ter alunos tão capazes e construtores tão talentosos.
Na preparação desta edição, incorporamos centenas de esclarecimentos sugeridos por nossa própria experiência de ensino e pelos comentários de colegas do MIT e de outras instituições. Redesenhamos a maioria dos principais sistemas de programação do livro, incluindo o sistema de aritmética genérica, os interpretadores, o simulador de máquina de registros e o compilador; e reescrevemos todos os exemplos de programas para garantir que qualquer implementação de Scheme em conformidade com o padrão IEEE Scheme (IEEE 1990) seja capaz de executar o código.
Esta edição enfatiza vários novos temas. O mais importante deles é o papel central desempenhado por diferentes abordagens para lidar com o tempo em modelos computacionais: objetos com estado, programação concorrente, programação funcional, avaliação preguiçosa e programação não determinística. Incluímos novas seções sobre concorrência e não determinismo, e tentamos integrar esse tema em todo o livro.
A primeira edição do livro seguiu de perto o plano de estudos do nosso curso de um semestre no MIT. Com todo o novo material da segunda edição, não será possível cobrir tudo em um único semestre, então o instrutor terá que escolher. Em nosso próprio ensino, às vezes pulamos a seção sobre programação lógica (4.4), fazemos os alunos usarem o simulador de máquina de registros, mas não cobrimos sua implementação (5.2), e damos apenas uma visão geral superficial do compilador (5.5). Mesmo assim, este ainda é um curso intenso. Alguns instrutores podem desejar cobrir apenas os três ou quatro primeiros capítulos, deixando o restante do material para cursos subsequentes.
O site da World-Wide-Web http://mitpress.mit.edu/sicp fornece suporte para os usuários deste livro. Isso inclui programas do livro, tarefas de programação de exemplo, materiais suplementares e implementações para download do dialeto Scheme de Lisp.