Ecrit il y a déjà une dizaine d'années, le SICP[1] reste un des livres les plus inspirés sur la programmation, enseignée au moyen de Scheme ([13]), un langage fonctionnel dérivé de Lisp.
De même que le meilleur ouvrage consacré à C a toujours été et reste le Kernighan-Ritchie[10], on ne peut qu'indiquer le Stroustrup[14] comme référence pour C++, et [4] pour Java.
La programmation fonctionnelle est très clairement exposée dans [8]. La programmation dans un langage à objets est présentée dans [14] (C++) et [4] (Java) par les auteurs de ces langages.
Pour comprendre la compilation des langages de programmation et leur environnement d'exécution, le grand classique est le << dragon >> [2].
La notion de pattern, issue des recherches de l'architecte Christopher Alexander [3], est développée dans [9], avec de nombreux exemples (en C++).
L'architecture des machines contemporaines est expliquée avec brio par deux des concepteurs du modèle RISC, Hennessy et Patterson[11], qui enseignent à Stanford et à Berkeley.
Pour l'algorithmique, on préférera la côte est, avec l'excellent cours du MIT de Cormen, Leiserson et Rivest[7], ou sur les rives de la Seine, le livre de Beauquier, Berstel et Chrétienne[5]. Pour des algorithmes numériques, les Numerical Recipes[12] constitue un matériel de référence dont un ingénieur doit connaître l'existence. Pour des algorithmes plus algébriques que numériques, les deux petits volumes [6] de Berstel, Pin et Pocchiola sont une mine de problèmes intéressants.