Course CPP101 Introduction to C++ Programming
Overview and Intended Delegates
The course is for experienced programmers, with a basic knowledge of C, or a similar language, who will be developing applications in C++, predominantly in a Unix or Linux environment. The compiler used on the course will be the GNU C++ compiler running on a Linux workstation. The course is also suitable for recent engineering and computer science graduates who need to "cure" any bad (programming) habits they might have picked up at University and to get up to full speed with C++.Programmers attending this course will learn to write carefully thought out and well implemented C++ code and learn a lot about the GNU C++ compiler at the same time. As well as command line and make oriented applicatio development the course will also make use of the Eclipse IDE.
Knowledge of Object Oriented Analsysis and Design, and of UML, although useful is not needed, as these topics will be covered in sufficient detail in the course where appropriate.
Course Content
- A background to object oriented thinking
- Objects as things having attributes and methods
- The message passing model of object interaction
- Objects as instances of some class
- Relationships between objects
- Hierarchies of object classes
- UML notation for describing classes and class hierarchies
- UML for describing relationships between objects
- Building more complex objects - composition and aggregation
- Practical applications leading to object oriented approaches
- Structured programming - modularity and information hiding
- Simulation and modeling of complex communications, manufacturing and logistics systems
- Artificial Intelligence (AI) - problem solving, planning, searching problems
- Graphical User Interfaces - window managers, widgets and controls
- Brief History of C++
- Early C++
- C++ is not a pure object oriented language - C++ as an extension of C
- C++ as an evolving language and new features introduced in C++11 and C++14
- An overview of the C in C++
- Base data types (numeric char, integer and floating point types)
- Pointers and arrays
- Function prototypes and function pointers
- Structs, pointers to structs and dynamic data structures
- Typedefs, enums and macro
- I/O in C
- Replacing C based I/O (printf, scanf and all that) with C++ based I/O
- Functions in C++
- Function overloading
- Name mangling / decorating
- Mixing C and C++ code modules (use of extern C)
- Operators and operator overloading in C++
- Classes and instances
- Member variables and member functions (private, public, protected)
- Constructors and destructors
- Default constructors and default destructors
- Initialiser lists
- Derived classes
- Arrays of classes
- More advanced aspects of working with classes and instances
- Copy constructors
- Deep vs. shallow copying
- Virtual functions and virtual classes (compile time vs. run time binding)
- Introduction to implementing dynamic data structures using classes (using linked lists and binary trees as examples)
- Friend classes and friend functions
- Static member variables and static member functions
- An introduction to templates and to the Standard Template Library
- A more detailed look at input and output in C++
- The C++ iostream classes
- Overloading the insertion and extraction operators for use with user defined classes
- Reading and writing to files
- Basics of object and data persistence
- An introduction to C++11 / C++14 language features.
- Smart pointers
- Uniform initialisation and move semantics
- Lambda functions
- Introduction to meta-programming
- Introduction to multi-threading