CO7104 C++ Programming and Advanced Algorithm Design
Credits: 20 
Convenor: Dr. N. Rahman 
Semester: 1 
Prerequisites: 


Assessment: 
Coursework: 50% 
Two hour exam in January: 50% 
Lectures: 
24 
Problem Classes: 
none 
Tutorials: 
12 
Private Study: 
90 
Labs: 
24 
Seminars: 
none 
Project: 
none 
Other: 
none 
Surgeries: 
none 
Total: 
150 
Subject Knowledge
Aims
This module teaches the basic principles of C++ programming and
the design of algorithms on modern computer architectures.
Learning Outcomes
Students should be able to: understand the basic components of a
C++ program including methods and attributes, the distinction
between classes and instances, the structures required
to write basic algorithms, algorithm analysis and design,
modern computer architectures and memory hierarchies and
some algorithms for scientific computing.
Methods
Class sessions, recommended textbook and
worksheets.
Assessment
Marked coursework, written examination.
Subject Skills
Aims
Develop problem solving skills by developing C++ programs for
scientific computing.
Learning Outcomes
Students will be able to design and implement C++ programs on modern
computer architectures for solving problems in scientific computing.
Methods
Class sessions together with worksheets.
Assessment
Marked coursework and traditional written examination.
Explanation of Prerequisites
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.
Syllabus
 Introduction to C++.
 Classes, constructors and destructors.
 Pointers, arrays and references.
 Methods and operators.
 Overloading.
 Templates and inheritance.
 Introduction to LAPACK++.
 Algorithm analysis and design.
 Modern computer architectures and memory hierarchies.
 Design of algorithms for matrix operations, polynomials
and the fast fourier transform.
Reading list
Essential:
Bjarne Stroustrup,
The C++ Programming Language, 3rd edition,
AddisonWesley, 1997.
Thomas H. Cormen, Charles E. Leiserson and Ronald L. Rivest,
Introduction to algorithms, 2nd edition,
MIT Press, 2001.
Background:
B. H. Flowers,
An introduction to numerical methods in C++,
Oxford : Clarendon Press, 1995.
Resources
Course notes, web page, study guide and worksheets.
Module Evaluation
Course questionnaires, course review.
Author: N. Rahman, tel: +44 (0)116 252 2593
Last updated: 20040120
MCS Web Maintainer
This document has been approved by the Head of Department.
© University of Leicester.