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
High Demand Course? Yes
Course Delivery Information
Not being delivered
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. Design 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
Graduate Attributes and Skills Not entered
Keywordsprogramming languages,interpreters,domain-specific languages,types,abstraction,parameterisatio
Course organiserMr James Cheney
Tel: (0131 6)51 5658
Course secretaryMiss Lisa Branney
Tel: (0131 6)51 7607
Help & Information
Search DPTs and Courses
Degree Programmes
Browse DPTs
Humanities and Social Science
Science and Engineering
Medicine and Veterinary Medicine
Other Information
Combined Course Timetable
Important Information