Algorithms and Imperative Programming

Unit code: COMP26120
Credit Rating: 20
Unit level: Level 2
Teaching period(s): Full year
Offered by School of Computer Science
Available as a free choice unit?: Y



Additional Requirements

Students who are not from the School of Computer Science must have permission from both Computer Science and their home School to enrol.

Alternative equivalent knowledge of Java accepted.


To make best use of available learning time by encouraging active learning and by transmitting information in the most effective ways.

To give students a genuine experience of C.

To make students aware of the importance of algorithmic concerns in real-life Computer Science situations.

To emphasise practical concerns, rather than mathematical analysis.

To become confident with a range of data structures and algorithms and able to apply them in realistic tasks.


This course unit covers fundamental material in Computer Science concerning algorithms and their correctness and performance. It is a two-semester very practical course, with few lectures, considerable practical experience and tutorial support. The student is expected to seek out material to support work on the course, thus contributing to developing "algorithmic literacy". The implementation of algorithms is illustrated in the widely-used programming language C.

Teaching and learning methods


22 in total, 1 per week


44 hours in total, 22 2-hour sessions, 1 per week

Learning outcomes

Learning outcomes are detailed on the COMP26120 course unit syllabus page on the School of Computer Science's website for current students.

Employability skills

  • Analytical skills
  • Innovation/creativity
  • Oral communication
  • Problem solving

Assessment methods

  • Written exam - 50%
  • Practical skills assessment - 50%


C for Java programmers (up to reading week)

Algorithms - what they are and how to express them (in pseudocode and selected programming languages: Java and C).

Practical experience in devising, assessing and using algorithms:

  • considerable practice in algorithmic problem solving for realistic problems
  • examples from a wide range of application areas
  • finding appropriate algorithms and data-structures
  • inventing appropriate algorithms and data-structures

Practical experience in 'algorithmic literacy' - knowing how to use the extensive literature on the subject, recognising what algorithms to use in applications and assessing their utility.

A range of basic data structures: arrays, lists, trees (including ordered and balanced trees and heaps), and various kinds of graphs. Representations of basic data structures in programming languages.

A range of basic algorithms: searching and sorting algorithms, tree traversal and manipulation algorithms, some basic graph algorithms. Other algorithmic areas will be explored through practical examples.

An introduction to algorithmic performance: space and time requirements, worst-case, average-case and best case estimates. Practical experience and techniques for measuring and predicting performance: Counting operations.

Scaling and some common rates of growth.

Reasoning about algorithms - experience in informally reasoning about algorithms to establish correctness.

Recommended reading

COMP26120 reading list can be found on the School of Computer Science website for current students.

Feedback methods

Feedback is via a variety of methods. Immediate feedback is provided in weekly laboratory sessions. There are tutorial sessions based on work in this course unit, with feedback on the exercises. Exam feedback is provided both on a website and on individual scripts.

Study hours

  • Assessment written exam - 4 hours
  • Lectures - 24 hours
  • Practical classes & workshops - 48 hours
  • Independent study hours - 124 hours

Teaching staff

Giles Reger - Unit coordinator

▲ Up to the top