The University of Southampton

COMP2209 Programming III

Module Overview

This module aims to introduce students to recursion and to the principles of recursive, applicative and functional programming. In it, they will use various functional abstractions to control the complexity of programming, and will use abstraction mechanisms in programming. They will also study the principles of program evaluation and explore the evaluation mechanism via a meta-circular evaluator.

Aims & Objectives

Aims

Knowledge and Understanding

Having successfully completed the module, you will be able to demonstrate knowledge and understanding of:

A1.  The key mechanisms underpinning the functional programming model

A2.  The principles of evaluation of programming language

Intellectual Skills

Having successfully completed the module, you will be able to:

B1.  Discuss and perform the decomposition of problems using procedural, data and metalinguistic abstractions.

B2.  Understand the concept of functional programming and be able to write programs in this style in the context of Scheme.

B3.  Reason about evaluation mechanisms.

Subject Specific Skills

Having successfully completed the module, you will be able to:

C1.  Program in a functional style

C2.  Evaluate programs step by step.

Syllabus

Recursive Techniques recursion on numbers, lists, trees, graphs.

  • Procedural Abstraction
    • procedures as arguments
    • procedures as return values
  • Objects
    • structures
    • closures
    • streams and delayed evaluation
  • Metalinguistic Abstraction
  • Environment model
    • evaluation
    • metacircular evaluators
  • Functional programming techniques in object oriented languages

Learning & Teaching

Learning & teaching methods

ActivityDescriptionHours
Lecture36
Tutorial12

Assessment

Assessment methods

MethodHoursPercentage contribution
Programming Exercises-65%
Exam0 hours35%

Referral Method: By examination

Share this module FacebookTwitterWeibo