COMP0002 Principles of Programming

This database contains the 2018-19 versions of syllabuses.

Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).

Academic session



Principles of Programming



Module delivery

1819/A4U/T1/COMP0002 Undergraduate

Related deliveries


Prior deliveries




FHEQ Level


FHEQ credits



Term 1

Module leader

Roberts, Graham


Roberts, Graham

Clark, David

Module administrator

Ball, Louisa


This module provides an introduction to computer programming using two different programming styles, imperative and functional programming. Its primary aim is to develop key design, programming, and problem solving skills, with a secondary aim of building students' confidence in their ability to take on and learn new programming languages within a short space of time. In order to achieve these aims the module has a substantial practical element in the form of compulsory lab classes where students work through sets of programming exercises to apply the programming concepts introduced during the module lectures.

Learning outcomes

On successful completion of the module, a student will be able to:

  1. Design, implement, debug and test small programs using two different programming paradigms, given straightforward specifications.
  2. Develop algorithms to solve a range of common programming problems.
  3. Compare and contrast the different paradigms, understanding the relative advantages and disadvantages of each
  4. Use common programming tools such as compilers, editors and debuggers
  5. Understand core computer architecture, memory and memory management, and the binary representation of data values

Availability and prerequisites

This module delivery is available for selection on the programmes listed below. The relevant programme structure will specify whether the module is core, optional, or elective.

In order to be eligible to select this module as optional or elective, where available, students must meet all prerequisite conditions to the satisfaction of the module leader. Places for students taking the module as optional or elective are limited and will be allocated according to the department’s module selection policy.

Programmes on which available:

  • BSc Computer Science (Year 1)
  • MEng Computer Science (International Programme) (Year 1)
  • MEng Computer Science (Year 1)
  • MEng Mathematical Computation (International Programme) (Year 1)
  • MEng Mathematical Computation (Year 1)


There are no formal prerequsities.


Core Programming Concepts

  • What is programming?
  • Programming languages
  • Programs and algorithms
  • Compilers and tools
  • Testing and debugging programs

Introduction to Imperative Programming

  • Core imperative programming ideas: sequence, selection, iteration, recursion, assignment and variables
  • Types and type checking
  • Functions, parameters, scope and lifetime
  • Arrays and files
  • Pointers and memory management

Introduction to Functional Programming

  • Core functional programming ideas
  • Recursion and recursive data structures such as lists
  • Lazy evaluation
  • Role of types
  • Higher order functions
  • List comprehension
  • Recursive functions

Program design in the small

  • Designing and implementing small programs
  • Implementing and using core algorithms and data structures
  • Good programming practice and defensive programming

An indicative reading list is available via


The module is delivered through a combination of lectures and lab classes, supported by programming exercises and coursework.


This module delivery is assessed as below:



Weight (%)



Written examination (2hrs 30mins)






In-class test


In order to pass this Module Delivery, students must:

  • achieve an overall weighted Module mark of at least 40.00%;

AND, when taken as part of BSc Computer Science; MEng Computer Science, and MEng Mathematical Computation:

  • achieve a mark of at least 30.00% in any Components of assessment weighed ≥ 30% of the module.

Where a Component comprises multiple Assessment Tasks, the minimum mark applies to the overall component.