This thread has thrown up some interesting suggestions but they all seem to fall into one of two categories: - the high-ground: Dijkstra, Knuth etc - the low-ground: write (any-which-how) a lot of code
And both these 'grounds' seem to cause more argument and less suggestions for good books. Let me therefore try to find a middle-ground and make a suggestion that I used to make to my students when I taught them programming: Read the Python Manual -- specifically the library. It contains a fairly good conspectus of modern day IT/CS. Some examples of what I mean: Want to study TDD? Read unittest and doctest and then go on to reading (and practising) Kent Beck etc Want to get into unix system programming? Nothing like playing around with os.path and stat before burining your hands with C. Networking protocols? smtplib, urllib, ftplib etc Low level networking? socket, select etc Algorithms? Good to get your feet on the ground with timeit -- http://mail.python.org/mailman/listinfo/python-list