Slide Update Recommendations

This document provides recommendations for updating the course PowerPoint slides to include modern C++ features and improve content organization.

Current Slide Decks

  1. cpp-part1.pptx - C++ Fundamentals (Weeks 1-6)
  2. cpp-part2.pptx - Advanced C++ and OOP (Weeks 7-14)

Priority Updates

High Priority Topics to Add

1. Template Specialization

Slide Location: cpp-part2.pptx (Templates section)

Content to Add:

Sample Code:

// Full specialization
template<typename T>
class Container { /* generic implementation */ };

template<>
class Container<bool> { /* specialized for bool */ };

// Partial specialization
template<typename T>
class Container<T*> { /* specialized for pointers */ };

2. lvalue, rvalue, and Move Semantics

Slide Location: cpp-part2.pptx (New section after Rule of Three)

Content to Add:

Visual Aids:

Sample Code:

class MyClass {
public:
    // Move constructor
    MyClass(MyClass&& other) noexcept 
        : data(std::move(other.data)) {
        other.data = nullptr;
    }
    
    // Move assignment
    MyClass& operator=(MyClass&& other) noexcept {
        if (this != &other) {
            delete data;
            data = other.data;
            other.data = nullptr;
        }
        return *this;
    }
private:
    int* data;
};

3. Smart Pointers (Expanded)

Slide Location: cpp-part2.pptx (Memory Management section)

Current Status: Basic coverage exists
Improvements Needed:

Content to Add:

unique_ptr:

auto ptr = std::make_unique<int>(42);
// Automatic cleanup, no copies, movable

shared_ptr:

auto ptr1 = std::make_shared<int>(42);
auto ptr2 = ptr1;  // Reference count = 2
// Automatic cleanup when last reference goes away

weak_ptr:

std::shared_ptr<int> shared = std::make_shared<int>(42);
std::weak_ptr<int> weak = shared;
// Doesn't affect reference count

Visual Aids:


4. Scoped Enums (enum class)

Slide Location: cpp-part2.pptx (Types and enumerations section)

Content to Add:

Comparison:

// Traditional enum (unscoped)
enum Color { black, white, red };
Color c = black;  // No scope needed
int value = black;  // Implicit conversion

// Scoped enum (enum class)
enum class Color { black, white, red };
Color c = Color::black;  // Scope required
// int value = Color::black;  // Error! No implicit conversion

auto white = false;  // OK - white doesn't pollute namespace

Medium Priority Updates

5. Lambda Expressions (Enhanced)

Slide Location: cpp-part2.pptx (Lambda section)

Improvements:


6. C++11/14/17/20 Feature Overview

Slide Location: cpp-part2.pptx (New section or expanded existing)

Topics to Cover:

C++11:

C++14:

C++17:

C++20 (Preview):


7. Virtual Functions and Polymorphism (Enhanced)

Slide Location: cpp-part2.pptx (OOP/Polymorphism section)

Add Example from Course Outline:

#include <iostream>
using namespace std;

struct Base {
    virtual void hi() { cout << "a"; }
};

struct Derived : Base {
    void hi() override { cout << "b"; }
};

void foo(Base &b) {
    b.hi();  // Polymorphic call
}

int main() {
    Derived x;
    foo(x);  // Outputs: b
    Base y;
    foo(y);  // Outputs: a
}

Visual Aids:


Low Priority Improvements

8. Exception Handling (Enhanced)

9. Const Correctness

10. Type Traits and SFINAE


Organizational Recommendations

Slide Numbering

Section Organization

Recommended Structure for cpp-part1.pptx:

  1. Introduction and Setup
  2. Basic Syntax and Types
  3. Control Structures
  4. Functions
  5. Arrays and Pointers
  6. References

Recommended Structure for cpp-part2.pptx:

  1. OOP Fundamentals
  2. Constructors and Destructors
  3. Rule of Three/Five
  4. Inheritance
  5. Polymorphism
  6. Templates
  7. STL
  8. Modern C++ Features
  9. Move Semantics
  10. Smart Pointers

Visual Design Guidelines

Consistency

Code Examples

Diagrams

Best Practices


Code Examples to Incorporate

From Repository

To Create


Interactive Elements

Recommendations


Accessibility

Guidelines


Version Control

Recommendations

Format: v[Major].[Minor].[Patch] - YYYY-MM-DD

Example: v2.1.0 - 2026-01-24


Testing and Validation

Before Finalizing Updates


Implementation Priority

Phase 1 (High Priority)

  1. Add move semantics section
  2. Expand smart pointers coverage
  3. Add template specialization
  4. Include scoped enums

Phase 2 (Medium Priority)

  1. Enhance lambda expression coverage
  2. Add C++11/14/17 feature overview
  3. Improve polymorphism examples
  4. Update visual consistency

Phase 3 (Low Priority)

  1. Add exception safety content
  2. Include const correctness section
  3. Add type traits basics
  4. Improve accessibility

Resources for Slide Creation

Reference Materials

Tools


Last Updated: January 2026
Next Review: Start of next semester
Maintainer: Course Instructor

Note: These are recommendations. Actual implementation should be discussed with the teaching team.