[The University of Leicester]

Department of Mathematics & Computer Science

Next: CO2006 Software Engineering and System Development Up: Year 2 Previous: CO2004 Design and Analysis of Algorithms

CO2005 Object-Oriented Programming Using C++

CO2005 Object-Oriented Programming Using C++

Credits: 10 Convenor: Dr. G. Laycock Semester: 2

Prerequisites: essential: CO1003, CO1004, CO1011 desirable: CO2006
Assessment: Coursework: 50% Two hour exam in May/June: 50%
Lectures: 18 Problem Classes: 6
Tutorials: none Private Study: 27
Labs: 24 Seminars: none
Project: none Other: none
Surgeries: none Total: 75

Subject Knowledge


This module teaches the basic principles of object-oriented programming, design and testing.

Learning Outcomes

Students should be able to: understand the basic components of an object-oriented program including methods and attributes, the distinction between classes and instances, the structures required to write basic algorithms, the components of simple text and graphics based interfaces, the relevance of the design process and basic object-oriented design notation, the applicability and effectiveness of various basic software testing techniques.


Class sessions, recommended textbook, worksheets, automated feedback and extensive web support.


Marked coursework, written examination.

Subject Skills


Develop problem solving skills by developing object-oriented programs in C++.

Learning Outcomes

Students will be able to: breakdown simple programming goals into object-oriented components, propose and evaluate different designs for solving problems using knowledge of fundamental programming techniques and the facilities available in the C++ Standard Template Library, and according to the relative space and time efficiency of the proposed solutions, implement the solution using C++ and the Standard Template Library, and test and evaluate the finished code.


Class sessions together with worksheets.


Marked coursework, one class test, traditional written examination.

Explanation of Pre-requisites

It is essential that students should have a thorough grasp of imperative programming before attempting this module. It is assumed that all students have a good working knowledge of Java, up to and including the use of inheritance, interfaces and exceptions.

It is beneficial if students taking this module have an understanding of the object-oriented design philosophy, and are familiar with the fundamental concepts of the object-oriented paradigm.

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 taking direct advantage of the powerful object-oriented philosophy. As such today's computer scientists and software engineers 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 object-oriented programming.

The vast majority of programming projects involve the organised storage of a large number of pieces of information. This module covers a wide range of well known abstract data types that can be used as containers for volumes of data. Each structure will be covered concretely, by studying the implementation in C++ and the Standard Template Library.


Converting Java to C++. Overview of C++ and comparison with Java, highlighting the differences between the type systems, inheritance, dynamic and static method invocations and exceptions. Memory management issues.

Data Structures. Presentation of the basic abstract data types (set, sequence and mapping). Use of the basic abstract data types to model real world data structures.

Implementation issues. The Standard Template Library of C++, and the basic structures in it (vector, list, set, map). Use of iterators and algorithms. Low level implementation issues when creating new structures from scratch.

Reading list


Timothy Budd, Data Structures in C++, using the Standard Template Library, Addison Wesley, 1998.


Timothy Budd, C++ for Java Programmers, Addison Wesley Longman 1999.

William J. Collins, Data Structures and the Standard Template Library, International Edition, McGraw Hill, 2003.

John R. Hubbard, Data Structures with C++, Schaum's Outline Series, McGraw Hill, 2000.

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


Course notes, web page, study guide, worksheets, lecture rooms with computer projection facilities and OHPs, past examination papers.

Module Evaluation

Course questionnaires, course review.

Next: CO2006 Software Engineering and System Development Up: Year 2 Previous: CO2004 Design and Analysis of Algorithms

[University Home] [MCS Home] [University Index A-Z] [University Search] [University Help]

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