THE UNIVERSITY of EDINBURGH

DEGREE REGULATIONS & PROGRAMMES OF STUDY 2026/2027

Draft Edition - Due to be published Thursday 9th April 2026

Timetable information in the Course Catalogue may be subject to change.

University Homepage
DRPS Homepage
DRPS Search
DRPS Contact
DRPS : Course Catalogue : School of Informatics : Informatics

Undergraduate Course: Topics in Programming Languages and Semantics (UG) (INFR11305)

Course Outline
SchoolSchool of Informatics CollegeCollege of Science and Engineering
Credit level (Normal year taken)SCQF Level 11 (Year 4 Undergraduate) AvailabilityAvailable to all students
SCQF Credits20 ECTS Credits10
SummaryThis course follows the delivery and assessment of Topics in Programming Languages and Semantics (INFR11302) exactly. Undergraduate students must register for this course, while MSc students must register for INFR11302 instead.
Course description This course follows the delivery and assessment of Topics in Programming Languages and Semantics (INFR11302) exactly. Undergraduate students must register for this course, while MSc students must register for INFR11302 instead.
Entry Requirements (not applicable to Visiting Students)
Pre-requisites It is RECOMMENDED that students have passed Elements of Programming Languages (INFR10061) OR Introduction to Theoretical Computer Science (INFR10059)
Co-requisites
Prohibited Combinations Other requirements This course is open to all Informatics students including those on joint degrees. For external students where this course is not listed in your DPT, please seek special permission from the course organiser.

This course requires practical mathematical application of discrete structures (trees, graphs, induction), logic and symbolic reasoning (inference rules, rewriting systems) and problem solving. For example, topics may require you to define or study the properties of a type system for tracking the ways different variables are used in a program. Some of the required details can be learned during the course, but some familiarity with these mathematical topics (or the ability to quickly acquire it through self study) is required

We assume that students have taken a basic introduction to programming languages, compilers, and/or theoretical computer science.
Information for Visiting Students
Pre-requisitesThis course requires practical mathematical application of discrete structures (trees, graphs, induction), logic and symbolic reasoning (inference rules, rewriting systems) and problem solving. For example, topics may require you to define or study the properties of a type system for tracking the ways different variables are used in a program. Some of the required details can be learned during the course, but some familiarity with these mathematical topics (or the ability to quickly acquire it through self study) is required

We assume that students have taken a basic introduction to programming languages, compilers, and/or theoretical computer science.
High Demand Course? Yes
Course Delivery Information
Academic year 2026/27, Available to all students (SV1) Quota:  None
Course Start Semester 2
Timetable Timetable
Learning and Teaching activities (Further Info) Total Hours: 200 ( Lecture Hours 20, Seminar/Tutorial Hours 16, Summative Assessment Hours 2, Programme Level Learning and Teaching Hours 4, Directed Learning and Independent Learning Hours 158 )
Assessment (Further Info) Written Exam 70 %, Coursework 30 %, Practical Exam 0 %
Feedback Targeted individual feedback will be provided on some of the formative work provided throughout the materials. Students are expected to engage with the course content in weekly tutorial sessions with teaching assistants, and to discuss any unanswered questions on the class forum.
Exam Information
Exam Diet Paper Name Minutes
Main Exam Diet S2 (April/May)Topics in Programming Languages and Semantics INFR11302 and INFR11305120
Learning Outcomes
On completion of this course, the student will be able to:
  1. identify how an aspect of an advanced programming languages topic applies to a given applied problem
  2. use programming languages techniques to model, reason about, or formally verify properties of a system
  3. critically compare and contrast alternative choices or variants of methods or approaches in the area
  4. identify the technical, ethical and societal implications, including both benefits and risks, of different approaches to programming language design and implementation
Reading List
Programming language foundations in Agda (Wadler, Kokke)
Practical foundations of programming languages (Harper)
Introduction to Process Algebra (Fokkink)
Additional Information
Graduate Attributes and Skills Apply critical analysis, evaluation and synthesis to issues, or issues that are informed by forefront developments in the subject / discipline / sector.
Identify, conceptualise, and define new and abstract problems and issues.
Develop original and creative responses to problems and issues.
Critically review, consolidate and extend knowledge, skills, practices and thinking in subject / discipline / sector.
Deal with complex issues and make informed judgements in situations in the absence of complete or consistent data / information.
KeywordsProgramming languages,Concurrency,Verification,Type theory,Type inference,Semantics
Contacts
Course organiserDr Ohad Kammar
Tel:
Email: ohad.kammar@ed.ac.uk
Course secretaryMr Lachlan Boyd
Tel:
Email: lboyd@ed.ac.uk
Navigation
Help & Information
Home
Introduction
Glossary
Search DPTs and Courses
Regulations
Regulations
Degree Programmes
Introduction
Browse DPTs
Courses
Introduction
Humanities and Social Science
Science and Engineering
Medicine and Veterinary Medicine
Other Information
Combined Course Timetable
Prospectuses
Important Information