Why take this course? To answer this question we must put it in a context. The context is that of computer science as a subject. We want to understand the role that programming languages play in the subject as a whole. To do that we need to look at the scope of computer science, its accomplishments and its promise. There is a new book that deals exactly with this topic, Computing the Future: A Broader Agenda for Computer Science and Engineering, by Juris Hartmanis and the Scope and Directions Committee of the NSF.
The book describes the accomplishments of computer science:
Computer programs enable the computer scientist and engineer to feel the excitement of seeing something spring to life from the `mind's eye' and of creating information artifacts that have considerable practical utility for people in all walks of life. Fred Brooks has captured the excitement of programming:
The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds castles in the air, creating by the exertion of the imagination. . . Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. . . The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be.
An example of this is the virtual reality simulation of a protein molecule, in which you put on a stereo vision headset and a Dataglove: you ``see'' the molecule in front of you and can ``pull'' on its bonds with your hands-and you feel the resistance.
This includes the theory of computability, the definition of machines, languages, process, information. One example is the emerging theory of information in the sense of Markov randomness. This and the study of complexity theory have enabled us to create a virtually unbreakable code, i.e. it would take 31.25 billion MIP-years to break it (see Rivest article in July 92 CACM). Now it is possible to give such a code, which in the past would have been priceless, to everyone. Consider what would have happened if the Germans had had such a code in World War II. We wouldn't have been able to decipher their messages, and this class might be taught in German today.
In the next lecture we will consider the experimental nature of computer science and look in some detail at the meaning of this intriguing quote from the Hartmanis report:
Although as an organized and independent intellectual discipline it is less than 30 years old, CS&Ehas established a unique paradigm of scientific inquiry - a computational paradigm - that is applicable to a wide variety of problems and has become the base on which a critical enabling technology of the next century will be built.