Principles of high-level programming languages, including formal techniques for syntax specification and implementation issues. Language concepts studied through at least two imperative languages (one static and one block structured) and at least one applicative language.