C++ for IceCube bootcamps

Introduction[edit | edit source]

Below is the material use for bootcamp held for the IceCube Collaboration in Madison, WI USA during May 2016. There were 30 collaborators in attendance.

Reading Materials[edit | edit source]

Required: "Discovering Modern C++: An Intensive Course for Scientists, Engineers, and Programmers" by Peter Gottschling.

Suggested: "C++ Coding Standards: 101 Rules, Guidelines, and Best Practices." by Herb Sutter and Andrei Alexandrescu.

Program[edit | edit source]

Monday[edit | edit source]

  • 9:00am-12:00pm: Chapter 1 - C++ Basics
  • 1:30pm-3:30pm: Chapter 2 - Classes
    • Members
    • Constructors, Destructors and Assigments
    • Accessing Member Variables
    • Operator Overloading Design
  • 3:30pm-4:00pm: Team Formation
  • 4:00pm-5:00pm: Work on Homework: Exercises 2.8.1, 2.8.2, 2.8.3 from Gottschling

Tuesday[edit | edit source]

  • 9:00am-10:00am: Homework Review
  • 10:00am-12:00pm: Object Oriented Programming
    • Basic Principles
    • Removing Redunancy
    • Multiple Inheritance
    • Dynamic Selection by Sub-typing
    • Conversion
  • 1:30pm-3:30pm: Generic Programming I
    • Function Templates
    • Namespaces and Function Lookup
    • Class Templates
  • 3:30pm-5:00pm: Work on Homework: 6.7.1, 6.7.2, 3.11.1, and 3.11.3 from Gottschling

Wednesday[edit | edit source]

  • 9:00am-10:00am: Homework Review
  • 10:0am - 12:00pm: Generic Programming II
    • Type Deduction and Definition
    • Template Specialization
    • Variadic Templates
  • 1:30pm-5:00pm: Work on Homework : Exercises - Variadic Templates exercise from lecture, 3.11.2, 3.11.4

Thursday[edit | edit source]

  • 9:00am - 10:00am : Homework Review
  • 10:00am - 12:00pm: Generic Programming III
    • Non-type template parameters
    • Functors
    • Lamba
    • CRTP
  • 1:30pm - 5:00pm : Work on Homework and Final Project
  • Homework : Exercises - Functor, Lambda, & CRTP (6.7.3) exercises from Lecture, 3.11.10, 3.11.11, 3.11.12

Friday[edit | edit source]

  • 9:00am - 10:00am : HW Review Session
  • 10:00am - 11:00am: Intro to MetaProgramming
    • Let the Compiler Compute
    • Providing and using type information
  • 11:00am - 12:00pm : Homework - 5.5.2 from Gottschling
  • 1:30pm - 5:00pm : Work on Final Project