Anyone interacting with a computer must communicate with it using some
kind of language. From the application user's point of view this is
often a languages of gestures, menu selections and typed text
with each application having its own little
The programmer is interested in getting the computer to carry out some complex task, usually repeatedly. He or she must specify the steps in such a way that they can ultimately be expressed to the computer in its native machine language. Although it's possible for the programmer to express the desired steps directly in the native machine language, this turns out to be impractical for many reasons. Instead, the programmer usually expresses his or her computation in a high-level programming language, and relies on another program, a compiler, to translate the high-level program to machine language. What are the desired characteristics of such a high-level programming language? It depends on many things. In general, we would like them to be such that at least the following properties hold:
This is a rigorous, hands-on course that follows the learn-by-doing philosophy. Students will learn about the design and specification of programming languages and will learn how to implement various language features. Two major subplots are: 1. to give you better insight into the nature of software and the software engineering process, and 2. to introduce you to the increasingly popular fun style of programming.