The descriptions are for modules currently being taught. They should be viewed as an example of the modules we provide. All modules are subject to change for later academic years.

Principles of Programming Languages (POPL) 2015/6

Workload - Private Study - Assessment - Description - Aims - Learning Outcomes - Content - Teaching Materials - Recommended Books

Module Code COM00005I
Lecturers Alan Wood, Dimitar Kazakov
Taken By CS 2, CS/Math 2, CS/Phil 2, CSESE 2, CSYS 2, MEng CS 2, MEng CS/Phil 2, MEng CSAI 2, MEng CSESE 2, MEng CSSE 2, MEng CSYS 2, MMath 2
Number of Credits 20
Teaching Autumn 2-10, Spring 2-10
Closed Assessment [50%] Exam Summer 5-7, 2.00 hours
Open Assessments Coursework 1 [25%]
25th Nov → 2nd Dec
Feedback: 13th Jan
Coursework 2 [25%]
24th Feb → 9th Mar
Feedback: 20th Apr
Reassessment [100%] Closed Exam - August Resit Week, 1.50 hours

Module Prerequisites

Prerequisite modules

Workload

  • Lectures: 30 x 1hr
  • Software Labs: 30 x 1hr
  • Private Study: 118hrs
  • Assessment: 22 x 1hr

Private Study

You have about 7 hours a week of private study time (not including revision and assessment time). You should plan to use this:

  • to review the lecture notes (both the handouts, AND your own!),
  • to complete the practicals ... you will NOT be able to complete them in the timetabled lab sessions,
  • to become familiar with the new programming languages that are used in the module (the practicals will introduce these, but you will need to take them further on your own).

Assessment

Closed Assessment

  • Exam Summer 5-7, 2.00 hours

The Closed paper will cover both parts of the module. You will answer a compulsory short-answer question, together with a question on part 1 of the the module and a question on part 2 of the module, each to be selected form a choice of two.

Open Assessments

Open 1 (end of Autumn term) will be an essay on a subject relevant to Part 1.
Open 2 (end of Spring term) will be a programming exercise concentrating on the Part 2 material.

Formative Feedback

Two (optional) formative exercises will be issued, one towards the end of each part covering material developed in that part. Submissions will be marked, and feedback given.

Description

This module will:

  • Examine fundamental issues underlying the design decisions of different programming languages.
  • Extend students' view of programming and programming languages beyond that encountered at stage 1.
  • Provide a basis for the comparative evaluation of programming languages.

Aims

The aims of the module are to:

  • Examine fundamental issues underlying the design decisions of different programming languages.
  • Extend students' view of programming and programming languages beyond that encountered at stage 1.
  • Provide a basis for the comparative evaluation of programming languages.

Learning Outcomes

  • To be able to express computational solutions in several of the main programming idioms
  • To be able to select an appropriate programming language for solving a computational problem, with justification
  • To know and understand the principal programming abstractions.

Content

The module is in two parts: the first deals with general principles of programming languages, and the second with those principles applied to concurrency. The principles to be discussed will be illustrated using a variety of programming languages such as: Java, C/C++, scheme, Haskell, perl, Ada, and Erlang. Other languages may also be used to illustrate particular points.

Part I
-----
Introduction: Abstraction; Composition; Syntax and semantics
Values and Names; Expressions; Equality
Procedures I and Scope I
Computational models; Procedures II; Types I
Control: sequencing; repetition
Data: primitive and compound static; dynamic; Scope II
Types II: primitive and compound; types as values
Encapsulation: Modules, packages; Objects and Classes

Part II Concurrency
------
Concurrency
- motivation and challenges
Representing tasks, threads and events
- classification of language models
Shared variables based communication
- semaphores and monitors
Message based communication
- synchronous message passing
- asynchronous message passing
Example languages
- Ada, Erlang, Java and Pascal-FC

Teaching Materials

  • Summaries of the lecture slides are available here:
www-module.cs.york.ac.uk/popl/Resources/Lectures/Notes/CurrentYear/
... but you WILL need to make your own lecture notes!
  • Lectures will be recorded via the Universtiy Replay system (where lecture theatre facilities allow).
  • Practical scripts will contain references to other learning resources where appropriate. Practical scripts are available here:
www-module.cs.york.ac.uk/popl/Resources/Practicals/CurrentYear/
  • The full text of "Structure and Interpretation of Computer Programs" is freely available here:
http://mitpress.mit.edu/sicp/full-text/book/book.html
  • The full text of "Concurrent Programming" (Burns and Davis) is freely available on the Departmental web site.

Recommended Books

Rating Author Title Publisher Year
**** H. Abelson, and G.J. Sussman Structure and Interpretation of Computer Programs MIT Press 1996
*** R.W. Sebesta Concepts of Programming Languages Addison Wesley 2009
*** A. Burns and G. Davis Concurrent Programming Addison-Wesley 1993
*** A.K. Bansal Introduction to Programming Languages CRC Press 2014
** D. Watt and W. Findlay Programming Language Design Concepts Wiley 2004
** T.W. Pratt and M.V. Zelkowitz Programming Languages: Design and Implementation Prentice Hall 2001
** D. Lea Concurrent Programming in Java Addison Wesley 1996
** A. Burns and A. Wellings Concurrent and Real-Time Programming in Ada CUP 2007
** F. Casarini and S. Thompson Erlang Programming O'Reilly 2009
** A. Burns and A. Wellings Real-Time Systems and Languages 4/e Addison Wesley
Back to top

Last updated: 19th September 2016