Advanced Object Oriented C Languages


  • To introduce the notion of object orientation and illustrate the differences between message-based and method-based object-oriented approaches, through the introduction of two Object-oriented variants of C; namely C++ and Objective-C 2.0.
  • To familiarise students with the use of advanced software development tools, and to illustrate the synergies between the use of graphical interface building tools and the use of programming languages.
  • To introduce the notion of Design Patterns and their application to challenging programming problems, and to demonstrate their application to event-driven programming tasks.


  • Introduction of Object-Oriented C Languages (2 lectures):
    Evolution of method-based approaches from Simula to C++, vs the evolution of message-based approaches from Smalltalk to Objective-C 2.0, and a comparison of both
  • Introduction to C++ and templates (2 lectures, 4 labs):
    Provide the basics of C++ and explore the use of templates for data management. Introduce XCode as a development environment.
  • Introduction to Objective-C 2.0 (3 lectures, 4 labs):
    Provide the basics of Objective-C 2.0 and the main Foundation Classes. Introduce Interface Builder as a graphical GUI development environment, and discuss synergy with Objective-C 2.0
  • Design Patterns (3 lectures, 2 labs):
    Introduce the general principles, and introduce patterns such as MVC to support GUI development.

Recommended Texts

  • Bjarne Stroustrup. The C++ Programming Language. Addison Wesley, 1997.
  • Stephen G. Kockan. Programming in Objective-C 2.0. Addison Wesley, 2008.

Learning Outcomes

At the end of the module the student should be able to

  • demonstrate the differences in the utilisation of object oriented principles in various C-based programming languages;
  • develop applications using both C++ and Objective-C 2.0 within an industry-level development environment;
  • demonstrate an understanding of the role of design patterns within software development;
  • apply appropriate design patterns when developing event-driven, GUI-based applications, and to utilise of graphical GUI development tools as part of this development.

Learning Strategy

Formal Lectures: Students will be expected to attend two hours of formal lectures per week over 5 weeks. Formal lectures will be used to introduce students to the concepts and methods covered by the module.

Practicals: Students will be expected to attend two hour of computer lab practicals per week over 5 weeks. Computer lab practicals are intended to allow students to undertake practical exercises with the possibility of immediate feedback. The lab exercises will focus on the design and implementation of applications that exploit and utilise the approaches discussed in the lectures.

Private Study: In a typical week students will be expected to devote about 9 hours of unsupervised time to private study over a period of 6 weeks. Private study will provide time for reflection and consideration of lecture material, background reading and completion of the assessment tasks.

Assessment: The module will be 100% continually assessed. There will be three sets of assessment tasks. The aim of each set is to consolidate the information presented in the lectures and to provide a practical experience in the implementation of simple software system using the relevant development tools and techniques. Each set of tasks will include a number of review questions and a few simple programming excercises, which will necessitate the development of novel solutions that are language specific. Each of the three sets will either be solved during a supervised lab session or completed by the students in their own private study time, as appropriate.