The University of Southampton

COMP2212 Programming Language Concepts

Module Overview

The aim of this module is to introduce students to the fundamental concepts underlying all programming languages, to introduce a broad range of programming language styles and features, and to provide the theoretical foundation that they will need in order to be able to make informed judgements about programming languages.

Aims & Objectives

Aims

  • Understand the main conceptual features of modern programming languages 
  • Understand common features of type systems and type discipline in various programming languages
  • Distinguish between families of languages (imperative, OO, functional, declarative) and within families (dynamically typed vs statically typed, call by name vs call by value, etc)
  • Use diverse programming language primitives for concurrency
  • Understand diverse approaches to formal semantics of programming languages

Syllabus

  • Compiled vs. interpreted languages  
  • Imperative, functional and declarative languages
  • Scope and binding
  • Type systems 
  • Type inference
  • Reasoning about programs
  • Contextual equivalence
  • Programming language semantics: operational, denotational and axiomatic semantics
  • Threading and thread safety 
  • Reasoning about concurrent programs
  • Concurrency primitives in modern programming languages

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
Lecture36
Tutorial12

Assessment

Assessment methods

MethodHoursPercentage contribution
Coursework-25%
Exam2 hours75%

Referral Method: By examination

Share this module FacebookTwitterWeibo