MIME-Version: 1.0 Server: CERN/3.0 Date: Wednesday, 20-Nov-96 20:17:33 GMT Content-Type: text/html Content-Length: 5082 Last-Modified: Tuesday, 08-Oct-96 17:29:17 GMT
Though CS611 is called ``Advanced Programming Languages'' in the course book, it is better entitled ``Semantics of Programming Languages''. The goal of this course is not to conduct a broad survey of hi-tech programming languages like C++, Java, or SML, nor to directly study implementation mechanisms for these languages (e.g., compressed dispatch tables for multiple inheritance). Rather, the goal of this course is to study the principles of formal notation for describing computations, and tools for analyzing and proving properties of computations. These concerns subsume the study of specific programming languages or implementation mechanisms and hence lead to a deeper understanding of programming, specification, logic, mathematics, and proof theory.
For example, we will study notations for abstractly specifying how programs compute (operational semantics), as well as notations for describing what programs compute (denotational semantics). In turn, the abstract but precise realization of these notations will allow us to study techniques (induction, logical relations) for formally proving interesting and relevant properties of programming languages (e.g., type safety or compiler correctness).
Ideally, a student coming out of this course will have learned something about how to make informal concepts and notation precise, and how to manipulate the notation to demonstrate useful properties.
On the programming side, we assume experience with at least a Pascal- or C-like language. Preferably, students will have some knowledge and experience working with a functional language, such as Scheme, ML, or Haskell.
On the theoretical side, we assume a basic proficiency in undergraduate mathematics, logic, and computer science. A basic knowledge of computability (e.g., turing machines, recursive functions) and logic (e.g., predicate calculus), as well as some mathematical maturity is required.
This course is designed for PhD students in CS, Math, OR, and EE. It is not for MEng or undergraduate students. If you are an MEng or undergraduate student, you must talk to the instructor to find out if the course is suitable for you.
Contact Information:
Relevant Web Links: