CO4104 C++ Programming and Advanced Algorithm Design

CO4104 C++ Programming and Advanced Algorithm Design

Credits: 20 Convenor: Dr. N. Rahman Semester: 1

Assessment: Coursework: 50% Two hour exam in January: 50%
Lectures: 20 Problem Classes: none
Tutorials: 10 Private Study: 100
Labs: 20 Seminars: none
Project: none Other: none
Surgeries: none Total: 150

Subject Knowledge


This module teaches the principles of C++ programming and the design of algorithms on modern computer architectures.

Learning Outcomes

Students should be able to: understand the components of a C++ program, the structures required to write basic algorithms, algorithm analysis and design, modern computer architectures and memory hierarchies and some algorithms for scientific computing.


Class sessions, recommended textbook and worksheets.


Marked coursework, written examination.

Subject Skills


To develop design, analysis and problem solving skills.

Learning Outcomes

Students will be able to mathematically analyse the computing performance of algorithms. They will be able to design algorithms to solve computing problems.


Class sessions together with worksheets.


Marked coursework and traditional written examination.

Explanation of Pre-requisites

It is assumed that students are already familiar with a programming language such as Fortran, Java or C.

Course Description

Over the past 15 years C++ has become one of the world's most popular programming languages, due to its potential for producing efficient and compact code. As such any scientist wishing to develop efficient programs should be familiar with the use of its central features. This module is intended to give the student a basic grasp of its use for scientific computing.

Algorithms are traditionally designed, analysed and compared on a theoretical computer model. However an algorithm that is fast on the theoretical model may be relatively slow on modern computers. This module introduces the memory hierarchies on modern computer architectures and its effects on algorithm performance. The module then teaches how to design fast algorithms on modern computers.


Reading list


Bjarne Stroustrup, The C++ Programming Language, 3rd edition, Addison-Wesley, 1997.

Thomas H. Cormen, Charles E. Leiserson and Ronald L. Rivest, Introduction to algorithms, 2nd edition, MIT Press, 2001.


B. H. Flowers, An introduction to numerical methods in C++, Oxford : Clarendon Press, 1995.


Course notes, web page, study guide and worksheets.

Module Evaluation

Course questionnaires, course review.

[University Home] [Faculty of Science] [MCS Home] [CS Home] CS Home Page [University Index A-Z] [University Search] [University Help]

Author: N. Rahman, tel: +44 (0)116 252 2593
Last updated: 2004-09-29
MCS Web Maintainer
This document has been approved by the Head of Department.
© University of Leicester.