To appreciate more fully the variety and diversity of high‑level programming languages available, and to have specific knowledge of a few.  To understand the concepts of syntax and semantics and the distinction between them. To be able to read and use formal syntactic specifications, and to have a conceptual model of the runtime behavior of programs. To be aware of the various categories of programm­ing language facilities and of some of the possible alternative designs within these categories.