About

Welcome to the course website for Advances in Programming Languages (APL).

Please note: This year I’m providing course information in duplicate: here on the web and also within the Blackboard Learn application. Both will in time contain the same material and you are free to use either.

Web https://wp.inf.ed.ac.uk/apl18
Learn Click here

This is a taught course in the School of Informatics at the University of Edinburgh, suitable for 4th- and 5th-year undergraduates and MSc students. APL surveys recent developments in programming language design and implementation with an emphasis on technological advances on the state of the art. The course is rated as 10 credit points at Level 11 in the Scottish Credit and Qualifications Framework (SCQF).

The course lecturer is Ian Stark and the current session of this course runs during Semester 1, from September–December 2018.

Links: School of Informatics cover page for APL; University course catalogue entry (DRPS).

Course Description

Students in APL learn about a range of significant issues in programming language design and implementation. Much of the material is presented in lectures on current topics, supported by additional reading and self-study. Students also learn through a practical exercise where they must individually research a chosen programming language innovation.

Areas covered include the following.

  • The aims of language design: correctness, uniformity, practicality

  • Advanced programming language constructs: overview and motivation

  • Specific examples of programming language approaches to different problem domains, generally four or five drawn from areas such as:

    • Concurrency, memory management, security, distribution, parallelism,

    • verification, correctness, types, objects, classes, language interworking,

    • polymorphism, generics, naming, and modularity.

Learning Outcomes

Students who successfully complete this course will be able to do the following.

  1. Give examples of different programming idioms, explain their distinctive features, and illustrate the relative advantages and disadvantages of these.

  2. For a range of programming language features, identify the problem they were created to solve, explain the approach they take to do this, and discuss possible problems that may arise.

  3. Outline some of the problems arising from the interactions between different features in programming languages.

  4. Describe in depth a specific recent programming language innovation, explaining its motivation, implementation, and how it compares to previous approaches.

  5. Write working code that demonstrates the use of a novel language feature, based on technical research papers and language documentation.

A written examination assesses outcomes 1–3. Outcomes 4 and 5 are assessed through a single piece of coursework, completed in two stages. This involves some software development and the writing of a report.