THE UNIVERSITY of EDINBURGH

DEGREE REGULATIONS & PROGRAMMES OF STUDY 2024/2025

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: Elements of Programming Languages (INFR10061)

Course Outline
SchoolSchool of Informatics CollegeCollege of Science and Engineering
Credit level (Normal year taken)SCQF Level 10 (Year 3 Undergraduate) AvailabilityAvailable to all students
SCQF Credits10 ECTS Credits5
SummaryProgramming languages are unique forms of communication that play a dual role: not only as ways for programmers to instruct machines, but as ways for programmers to talk to each other about computation. Paradoxically, they are among the most permanent features of the computing landscape (Fortran, for example, is still widely used 60 years since its invention), and among the most energetic and innovative, with new programming languages introduced every few months, often aiming to simplify Web programming, parallel, or distributed computing.

Although few computer scientists will ever design a new, general-purpose language like Java or C++, all computer scientists need the ability to learn new languages quickly, recognise and use (or avoid misusing) common language features, and even design new domain-specific languages for restricted problem domains. The design of programming languages involves many subtle choices and tradeoffs among performance, convenience, and elegance.

This course covers the essential programming structures for managing data and controlling computation, as well as abstractions that facilitate decomposing large systems into modules. The course also covers pragmatics of programming languages, including abstract syntax, interpretation and domain-specific language implementation. You will not learn how to use any one language, but instead you will learn the basic elements you need to understand the next 700 programming languages, or even design your own.
Course description * Abstract syntax and name-binding; Lexical vs. dynamic scope
* Modelling programming language features using inference rules
* Interpreters as a way of defining and exploring language features
* Domain specific languages, translators, and pragmatics of language processing
* A selection of topics illustrated by case studies from current or historically important language designs:
- data structures: pairs/record types; variant/union types; recursion
- abstracting data: overloading; generics; ad hoc vs. parametric polymorphism
- control structures: goto, loops, case/switch, exceptions
- abstracting control: procedure call/return; function types; continuations
- design dimensions: eager vs. lazy evaluation; purity vs. side-effects; state
- object-oriented features: objects, classes, interfaces, subtyping, (multiple) inheritance
* Advanced topics/guest lectures on concurrent, parallel, distributed programming, security, or verification (linking to UG4 year courses)
Entry Requirements (not applicable to Visiting Students)
Pre-requisites Co-requisites
Prohibited Combinations Other requirements MSc and visiting undergraduate students must have previous programming experience comparable in level to that obtained in years 1 and 2 of any of the School of Informatics' undergraduate degrees.
Information for Visiting Students
Pre-requisitesAs above.
High Demand Course? Yes
Course Delivery Information
Academic year 2024/25, Available to all students (SV1) Quota:  None
Course Start Semester 1
Timetable Timetable
Learning and Teaching activities (Further Info) Total Hours: 100 ( Lecture Hours 20, Seminar/Tutorial Hours 8, Supervised Practical/Workshop/Studio Hours 2, Summative Assessment Hours 2, Programme Level Learning and Teaching Hours 2, Directed Learning and Independent Learning Hours 66 )
Assessment (Further Info) Written Exam 80 %, Coursework 20 %, Practical Exam 0 %
Additional Information (Assessment) 2 pieces of assessment for formative feedback, which will feed into assessed coursework.
1 piece of assessed coursework (20%).
1 exam (80%).



Feedback Not entered
Exam Information
Exam Diet Paper Name Hours & Minutes
Main Exam Diet S1 (December)Elements of Programming Languages (INFR10061)2:120
Learning Outcomes
On completion of this course, the student will be able to:
  1. investigate the design and behaviour of programming languages by studying implementations in an interpreter
  2. employ abstract syntax and inference rules to understand and compare programming language features
  3. fesign and implement a domain-specific language capturing a problem domain
  4. understand the design space of programming languages, including common elements of current languages and how they are combined to construct language designs
  5. critically evaluate the programming languages in current use, acquire and use language features quickly, recognise problematic programming language features, and avoid their (mis)use.
Reading List
* Essentials of Programming Languages, Friedman, Wand and Haynes
* Practical foundations for programming languages, Harper
Additional Information
Course URL https://opencourse.inf.ed.ac.uk/epl
Graduate Attributes and Skills Not entered
Keywordsprogramming languages,interpreters,domain-specific languages,types,abstraction,paramaterisation
Contacts
Course organiserMr James Cheney
Tel: (0131 6)51 5658
Email: jcheney@inf.ed.ac.uk
Course secretaryMiss Rose Hynd
Tel: (0131 6)50 5194
Email: rhynd@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