Site Sections => About Us | Consultancy | Training | Software | Publications | Open Source | Support | Open Standards | FAQ | Jobs
Site Style Info

Advanced C++ Programming for Unix and Linux - A 5 Day Course

Synopsis

This course covers the mechanics of building complex Unix / Linux based applications in C++. It is a collection of examples and case studies that are important, yet do not seem to be dealt with elsewhere.

A large part of the course explores techniques for implementing wrappers around Unix API system calls in order to implement functionality at a higher level of abstraction, by hiding much of the low level functionality inside a suitable class.

The course also covers techniques for developing Graphical User Interfaces using Widget sets implemented in C++,such as Qt+ and Gtk+, as well as the Motif widget set (which is implemented in C).

The principles of developing distributed applications using CORBA are introduced, as are C++ object oriented approaches to building Socket based applications.

A major section of the course deals with implementing Posix threads based applications in an object oriented manner.

Suitable for

The course is for experienced C++ and Unix programmers, who would like to take a more object oriented approach to Unix application development.

Attendees are expected to have an engineering "mind set" - i.e. prepared to "get their hands dirty" by experimenting with ideas and programming approaches.

The course is also suited to those who will be designing and implementing large complex application frameworks that will be running on Unix / Linux platforms.

Prerequisites

  • A good understanding in C++ programming
  • Several months experience in practical C++ programming

Delegates must be fluent in C++ and keen to learn about methods of building better software and improving their understanding of what works well in a C++ environment. Delegates who will obtain the most from the course are those who enjoy learning and questioning, who adopt an intelligent and inquisitive approach to their task.

Course Skills

  • C++ Graphical User Interface Implementation
  • Distributed application development using CORBA and C++
  • Implementing wrappers around C based API functionality
  • Working with threads in an object oriented way
  • Working with virtual classes and virtual inheritance
  • Understanding object oriented approaches to network programming and network management
  • Implementing data persistence using serialisation techniques, relational database techniques and object oriented database techniques

Other Information

The course contains a number of challenging exercises. For many of the exercises a lot of the supporting code will be provided, so that students can concentrate on applying one or more key concepts.

Exercises will consist of a core problem, followed by several challenges of increasing difficulty. The challenges are meant for post course skills development.

The course will use the GNU C++ compiler, Linux and Solaris based workstations The course hours will be from 9 a.m. to 5.30 p.m. for the first four days, and from 9 a.m. to 4 p.m. on the last day. Students are encourage to come earlier (8 a.m. or to carry on working after class (till 7.00 p.m.) if they wish to. Where students have their own laptops (running either Linux or Solaris) they can work on the challenge exercises at home, or at their hotel in the evenings.

  • Implementing a graph search algorithm using the STL
  • Setting up a CORBA based information service
  • Developing a Motif based query form in C++
  • Implementing Tetris in C++ using Qt+ or Gtk+ as the basis for the user interface
  • Implementing a socket based video data streaming service in C++
  • Devising a multi-threaded simulation of a manufacturing plant
  • Exploring and improving the functionality provided by a basic serialisation library
  • Implementing a data persistence scenarion using MySQL as the underlying relational database

Scheduled and On-site Courses

Courses in this subject are scheduled on an 'ad-hoc' basis. We can arrange a course at our Carshalton centre or on customer site for any client wishing to send two or more delegates on the same course.

For courses at the Carshalton Centre the fee will be:

  • £3500 + VAT for the first two delegates
  • £1650 + VAT for the third delegate
  • £1200 + VAT for the fourth delegate
  • £400 + VAT for each additional delegate to a maximum of eight

On-site course fees are as above + expenses recharged at cost.

For a 1:1 course in Carshalton the fee is £2750 + VAT. For a 1:1 on-site course the fee is £2750 + VAT + expenses recharged at cost.

If there are any dates showing below this line, a course has been scheduled and places for individuals are available at £1750. Otherwise, no courses are currently scheduled and the above fees apply.


Contents:

An overview of C++ - the language, patterns and idioms

  • Inheritance, Polymorphism and all that
  • Function Objects
  • Templates and the Standard Template Library
  • Mixed C and C++ programming
  • Key patterns - Singleton, Observer, Visitor, Composite
  • Templates and the Standard Template Library
  • Namespaces and scope

An overview Unix technologies

  • The POSIX API and its variants
  • Inter-process communication under Unix/Linux
  • The Berkeley Sockets API
  • POSIX Threads (p-threads)
  • The Unix file system
  • X windows

Techniques for Devising and Implementing Wrapper Classes

  • Operating system resources as objects
  • The create a resource, get a handle, manipulate the resource via system and library calls that take a handle as an argument API model
  • Creating classes corresponding to operating system resources - that contain the handle as a member variable, and methods for manipulating the resource that invoke the underlying system and library calls
  • Wrapping up Motif Widgets in C++ - a case study

Extending functionality beyond wrapper classes

  • Managing a collection of child processes
  • Devising two way communication with objects that contain a pair of pipes
  • Creating shared memory objects with built in critical sections
  • Implementing a Model-View-Controller pattern using Motif Widgets

Working with P-threads the object oriented way

  • Designing and implementing a p-thread class
  • Devising and implementing a thread local storage scheme
  • Managing a pool of worker threads
  • Inter-task communication mechanisms for use with p-threads

Working with C++ based widget sets

  • Commonly occurring widgets - buttons, menus, dialogs, list boxes ...
  • Layout managers
  • Overview of Qt+
  • Overview of Gtk+
  • Deriving new widget classes

CORBA and C++

  • Overview of CORBA
  • MICO - Corba implementation
  • ORBACUS - Corba implementation
  • Implementing Client / Server applications in C++ and CORBA

Data Persistence

  • Serialisation - simple and complex
  • Serialisation libraries
  • Use of Smart pointers
  • Persistence using relational databases
  • Persistence using object relational databases
  • Persistence using object oriented databases

Network programming

  • Object oriented perspective on TCP/IP
  • Wrapping up the Sockets API in C++
  • Building application services derived from a Socket class
  • Network management with SNMP
  • An overview of SNMP++

C++ training UK enquiries

UK Training enquiries and feedback form.

C++ training UK prices

For publicly scheduled training (individual places), see our UK training schedule.

In-house training for company groups is charged at a daily rate per group — see our In-House UK Training Guidelines.

Publicly Scheduled Training Locations

We currently run public training courses in the following locations:

  • London, UK
  • Leeds, West Yorkshire, UK
  • Birmingham, West Midlands, UK
  • Carshalton, Surrey, UK
  • Chester, North West, UK
  • Coventry, West Midlands, UK
  • Edinburgh, Scotland, UK
  • Glasgow, Scotland, UK
  • Harwell, Oxfordshire, UK
  • Manchester, North West, UK
  • Milton Keynes, Buckinghamshire, UK
  • Newark, Nottinghamshire, UK
  • Reading, Berkshire, UK
  • Slough, Berkshire, UK
  • Stevenage, Hertfordshire, UK
  • Wakefield, West Yorkshire, UK
  • Wokingham, Berkshire, UK

Most UK public training courses are available on a monthly basis.

Please see the individual course outlines or our public training schedule for details.

In-house (on-site) training locations

We deliver in-house courses at client premises and/or training facilities in any part of the world which is practically and commercially accessible.

Our In-house training guidelines outline our basic requirements and our UK pricing structure. To estimate costs for training in other countries, simply convert to your local currency and then make a rough calculation of our tutor's costs for travelling to and staying at your location.


West Yorkshire Office

GBdirect Ltd
Training Division
Bradford Design Exchange
34 Peckover Street
BRADFORD
BD1 5BD
West Yorkshire
United Kingdom

training@gbdirect.co.uk

Training: 0800 651 0338
General: +44 (0)870 200 7273
Finance: +44 (0)1353 615 174

Please call between 0900 and 1700 (UK time) on Monday to Friday


South East Regional Office

GBdirect Ltd
Training Division
18 Lynn Rd
ELY
CB6 1DA
Cambridgeshire
United Kingdom

training@gbdirect.co.uk

Training: 0800 651 0338
General: +44 (0)870 200 7273
Finance: +44 (0)1353 615 174

Please call between 0900 and 1700 (UK time) on Monday to Friday


Please note:
Non-training enquiries should be directed, initially, to our UK national office in Bradford (West Yorkshire), even if the enquiry concerns services delivered in London or South/East England. Clients in London and the South East will typically be handled by staff working in the London or Cambridge areas.