Ages 14–17 | 5-Day Full-Day or 10-Day Half-Day
Prerequisite: At least one full-year programming course (e.g., AP CSA, Intro to Java, or Intro to Python). Prior C++ experience is not required.
Learn C++ while building real projects with advanced data structures — vectors, stacks, queues, sets, maps, linked lists, and recursive backtracking. Code Conway's Game of Life, an RPN Calculator, a Sudoku Solver, and more. Powered by CodeHS Data Structures in C++.
| Session | Project |
|---|---|
| AM 1 | C++ syntax for programmers — program structure, I/O with cin/cout, variables, types, conditionals; Choose Your Own Adventure (8 branching endings) |
| AM 2 | Loops, functions, pass-by-reference vs. pass-by-value; Project: Caesar Cipher Encryption — encode and decode messages with shift keys |
| PM 1 | Vectors — create, push_back, iterate, access by index; Final Grade Calculator (compute averages needed for target grades) |
| PM 2 | Structs and file I/O — read/write files, parse structured data; Project: Movie Database — import IMDB data into a searchable struct-based system |
| Session | Project |
|---|---|
| AM 1 | Header and implementation files — create a reusable Basic Math Library with .h and .cpp files |
| AM 2 | 2D vectors — define, populate, and traverse a grid; Magic Square Tester (validate rows, columns, and diagonals) |
| PM 1 | Project: Conway's Game of Life — build the classic cellular automaton on a 2D grid with birth/death/survival rules |
| PM 2 | Stacks (LIFO) — push, pop, top; Browser History using two stacks for back/forward navigation |
| Session | Project |
|---|---|
| AM 1 | Project: RPN Calculator — implement a Reverse Polish Notation calculator using a stack to evaluate postfix expressions |
| AM 2 | Queues (FIFO) — enqueue, dequeue, front; Line Simulator — compare single-queue vs. multi-queue strategies for a grocery store |
| PM 1 | Pairs, iterators, and sets — iterate through data structures; Project: Bingo — generate boards with sets, track picked numbers, detect wins |
| PM 2 | Maps — key-value storage, insertion, lookup, iteration; Project: FRC Scoring System — import matches, score them, display live rankings |
| Session | Project |
|---|---|
| AM 1 | Functional recursion — define base cases and recursive calls; code factorial, Fibonacci, and power functions |
| AM 2 | Procedural recursion and recursive backtracking — setup, explore, undo pattern; Project: Air Freight (knapsack optimization under shipping limits) |
| PM 1 | Project: Sudoku Solver — implement a recursive backtracking algorithm that fills a 9×9 grid following all Sudoku constraints |
| PM 2 | Pointers — create, dereference, pass to functions; Team Roster — use pointers to link records across a robotics team database |
| Session | Project |
|---|---|
| AM 1 | Singly linked lists — insert, delete, traverse nodes; Mail Forwarding — track an email forwarding chain using a linked list |
| AM 2 | Doubly linked lists and intro to graphs — when to use each structure; compare traversal and lookup performance |
| PM 1 | Final Project: Virtual Lines — build an amusement park queue management system combining queues, maps, and linked lists (add riders, manage wait lists, reassign positions) |
| PM 2 | Complete and present final projects; discuss data structure tradeoffs and real-world applications (databases, OS schedulers, route planners) |
| Days | Content |
|---|---|
| Days 1–2 | C++ Crash Course & Vectors (Full-Day 1 content) |
| Days 3–4 | 2D Vectors, Game of Life & Stacks (Full-Day 2 content) |
| Days 5–6 | RPN Calculator, Queues & Sets (Full-Day 3 content) |
| Days 7–8 | Recursion & Backtracking (Full-Day 4 content) |
| Days 9–10 | Linked Lists & Final Project (Full-Day 5 content) |
