Information About the Course


This course aims to provide a solid understanding of the basic features of C++. After completing the course, students should be in a position to start using the acquired knowledge to write C++ programs, and to understand C++ programs written by others.

The follow-on courses Hands-On Object-Oriented Programming in C++ and Hands-On Generic Programming in C++ and the STL, consider the two major programming paradigms supported by C++, in greater depth.


The course is built around the development of a single program which, in its initial form, is sufficienly trivial to allow the students to write a basic working program with an easily visually-verifiable result, very quickly.

As richer features are added into the model and shortcomings of the implementation are observed and discussed, the introduction of more C++ language features is naturally motivated. The additon of these features into the context which the students have been building up throughout the course, offers strong intuitive support which aids understanding and provides the opportunity to gain practical experience with putting the features to work.

Alternative implementation choices are considered and used to gain an understanding of C++ language design choices and established practices.

A Distributed Version Control System is be used to maintain the code base.

Students are encouraged to grow their own code base, but at any stage, they have the possibility of falling back on solutions written by the trainer.

The use of debuggers is encouraged, where appropriate.

The pace of the course is set by the demands of the students: the main aim is to acquire a thorough practical understanding of how the language works. Faster students will have the opportunity to build a richer model.

  • C heritage
    • Preprocessing
    • Types and type declarations
    • Variables
    • Scope
    • Functions
    • Loops
    • Arrays
    • Pointers
  • C++-specific features
    • References
    • Constness
    • Namespaces             
    • Overloading
    • Constructors
    • Declaration is instantiation
    • Initializer lists
    • Destructors
    • Privacy, encapsulation, message-passing
    • Dynamic dispatch, late binding
    • Formal or static types vs. Run-time or Dynamic types
    • Memory management
    • IO streams
    • Templates
    • Operators
    • A first look at the STL


4 days (32 hours)

 Timetable: 9-12/4/2013   9:30-13:30, 14:30-18:30  

 Place:  IFIC, sala de reuniones de semisótano (SS6). Edif. Investigación

Required Material

laptop with the following software:


Also if possible:


Copyright © Wednesday the 23rd 2017. Sabor y Origen de la Materia. - All rights reserved.