Undergraduate Course: Types and Semantics for Programming Languages (INFR11114)
|School||School of Informatics
||College||College of Science and Engineering
|Credit level (Normal year taken)||SCQF Level 11 (Year 4 Undergraduate)
||Availability||Available to all students
|Summary||Type systems and semantics are mathematical tools for precisely describing aspects of programming language. A type system imposes constraints on legal programs in order to guarantee their safe execution, whilst a semantics specifies what a program will do when executed. This course gives an introduction to the main ideas and methods of type systems and semantics. This enables a deeper understanding of existing programming languages, as well as the ability to design and specify new language features.
*Inductive definitions and proof by induction
*Untyped and simply-typed lambda calculus. Variable binding.
*Small step and big step semantics.
*Progress and preservation theorems.
*Products, sums, and list types.
*Reference types and exceptions.
*Subtyping. Subsumption and its understanding as inclusion or coercion.
*Principles of operational semantics.
*Key concepts of semantics: compositionality, adequacy, observational equivalence, full abstraction, and definability.
Relevant QAA Computing Curriculum Sections: Comparative Programming Languages, Compilers and Syntax Directed Tools, Programming Fundamentals, Theoretical Computing
Information for Visiting Students
Course Delivery Information
|Academic year 2014/15, Available to all students (SV1)
|Learning and Teaching activities (Further Info)
Lecture Hours 20,
Summative Assessment Hours 2,
Programme Level Learning and Teaching Hours 2,
Directed Learning and Independent Learning Hours
|Assessment (Further Info)
|Additional Information (Assessment)
||Short exercises each week.
If delivered in semester 1, this course will have an option for semester 1 only visiting undergraduate students, providing assessment prior to the end of the calendar year.
||Hours & Minutes
|Main Exam Diet S2 (April/May)||2:00|
| 1.Read and understand the presentation of operational semantics and type systems via inference rules for lambda calculus, and be able to modify such a presentation to include a new language feature, such as state and exceptions.
2.State and prove the theorems that relate big-step and small-step semantics, and the preservation and progress theorems that link operational semantics and type systems.
3.Exploit the connection between logic and type systems, where propositions correspond to types and proofs correspond to programs; understand how conjunction corresponds to products, disjunction to sums, and implication to functions.
4.Read a formal semantics for a small programming language written in operational denotational style, interpret it in informal terms, and predict how a given program will behave according to the semantic denition.
5.Write a formal semantics for a programming language in the operational style, given a careful informal description of the language, and explain how any inadequacies in the informal description have been addressed in the formal one
6.Be able to write inductive definitions and prove properties of them using induction.
|* Benjamin Pierce, et al, Software Foundations, 2012. [Available online, required reading: http://www.cis.upenn.edu/~bcpierce/sf/]|
|Course organiser||Prof Philip Wadler
Tel: (0131 6)50 5174
|Course secretary||Miss Claire Edminson
Tel: (0131 6)51 4164
© Copyright 2014 The University of Edinburgh - 12 January 2015 4:12 am