Summer C++ Short Course Notes - Jim Fawcett

"Good judgement comes from experience, and experience comes from bad judgement."
- Jim Horning
First Day: Dave Schroeder, Zach Champoux, Adam Wiethuechtr, Jim Henrickson, Stu Card, Bill Chappell, Justin Fleming, Chris Rothrock, Yevgeny Lavrov, Jeremy Fields

Synopsis:

This short course provides an introduction to the C++ Programming Language and some of its Libraries. Given familiarity with the C Programming Language, you should, after completing, be able to understand most C++ code and, with a bit of practice, have the skills to write correct and quick programs.

We will discuss language concepts and structure and look at several code examples. The handouts include all of the code we will discuss.

Agenda:

  1. Introduction - who we are
  2. Course code repository
  3. Platform:
    • Linux and Windows Tool Chains
  4. Modern Languages: C, C++, Go, Java and C#, and Javascript
  5. Similarities and differences between C and C++
    • The What - an inventory of parts
    • The How - safe and effective use
    • Similarity is not Equvalence
    • Compilation and Environment Models
    • Types - value types and reference types
    • std::unique_ptr and std::shared_ptr
    • Unique role of C++ references
    • Structs vs. Classes
    • Namespaces
    • Functions - overloading, pass and return by value and reference
    • Scope - compile-time and run-time
    • Classes and class relationships
    • Compiler Libraries
    • Why C++
  6. Package layout
  7. Anatomy of a C++ class - Dive into declaration and definition details
    This will explore most class specific syntax and semantics with an example
  8. Syntax and Semantics of Inheritance:
    • Interfaces
    • Abstract classes
    • Inheritance hierarchies
  9. Compound objects
    Construction of compound objects is surprisingly flexible and subtle. We will explore this with an annotated example that illustrates all of the things you need to know about initialization.
  10. Plugins
    Plugins Implement one or more interfaces declared by the plugin host, provide object factories for the host to start the plugin, and may expect the host to sink plugin events. The are implemented as shared libraries so the host can load them at run time.
  11. Linux System calls
    Many of the Linux System calls are wrapped by the C/C++ libraries. We will take a quick look at some interesting calls and some sample code.
  12. Overflow Topics:

Last Day: Adam Wiethuechtr, Chris Rothrock, Tim Castiglia, Bill Chappell, Justin Fleming, Jeremy Fields
missing from photo: Zach Champoux, Yevgeny Lavrov (see top photo)