CSE 498

Logo

MSU
Spring 2026

Home

Schedule

Projects

Quizzes

Weekly Updates

Code from Class

Resources

Schedule

This course is divided up into five units, covering a range of C++ topics. Before each class session, students will be expected to either watch a video (typically under 60 minutes) or read a blog post for in-class discussion. The course will meet twice a week (Mondays and Wednesday, 3 pm to 4:50pm in STEM 2202); in addition to the discussion of material from the videos (which may include elaboration on content), classes will consist of live-coding demonstrations, live code reviews, quizzes, time for students to try out coding techniques, or time for the project groups to work together.

Unit I: C++ Fundamentals

Date Discussion Topic  
Week 1    
1/12/26 A review of 232 and 335  
1/14/26 Tools: Compiler Features and Static Analysis  
  Watch: 31 nooby C++ habits you need to ditch (16 min)  
  Watch: Software Development with C++: clang-format (9 min)  
  Watch: Software Development with C++: Compiler Optimization Levels (13 min)  
Week 2    
1/19/26 NO CLASS (MLK Day)  
1/21/26 C++ Core Guidelines  
  Watch: 10 Core Guidelines You Need to Start Using Now (first 54 min + optional Q&A session)  
  Out: Project Group Assignments  
  Quiz: 1a  
Week 3    
1/26/26 C++ Terminology and Basic Concepts  
  Watch: Never free memory yourself! Do this instead (in modern C++) (first 14 min, though watch the end if you need a smart pointer refresher)  
  Watch: Why is there Undefined Behavior in C++? (4 min)  
  Watch: L-Values vs. R-Values (4:18 to 12:42; 8 min)  
  Read: When should static_cast, dynamic_cast, const_cast, and reinterpret_cast be used? (first answer is best, but later answers provide examples)  
  Read: Using the C++23 std::expected type
  Slides From Lecture  
1/28/26 Compiling C++ into WebAssembly with Emscripten  
  Install and Read Tutorial: Getting Started with Emscripten  
  Optional: Using WebAssembly and C++ to Make a Simple Game (72 min)  
  Quiz: 1b  
  Due: Team agreements (sample)  
  Due FRIDAY Jan 30: Specs for initial C++ classes and module proposal  
  Git Slides From Lecture  

Unit II: Writing Reliable Code

Date Discussion Topic
Week 4  
2/2/26 Avoiding Undefined Behavior
  Watch: Undefined Behavior in C++: What Every Programmer Should Know and Fear (33 min)
  Lecture Slides
  Lecture Slides [Halting problem]
2/4/26 Tools: Setting up Testing Frameworks
  Read over: Catch 2 - Tutorial
  Read over: Unit vs. Integration Testing
  Quiz: 2a
  Milestone: Initial working C++ classes
  Lecture Slides [Software Testing]
Week 5  
2/9/26 Debugging your code
  Watch: Lessons from 20 years of Debugging C++ Code (only need the first 45 min)
  Watch: Constexpr and Static Assert (7 min)
  Lecture Slides: Debugging / compile-time work
  Quiz: 1c
  Lecture Slides [Non-conventional Testing Techniques]
2/11/26 Memory Management + Casting
  Watch: Smart Pointers in C++ (25 min)
  Quiz: 2b
  Milestone: Test suite, class asserts
  Lecture Slides [Memory Safety]

Unit III: Writing Generic Code

Date Discussion Topic  
Week 6    
2/16/26 Template Rules  
  Watch: Templates Introduction (11 min)  
  Watch: Template Functions (14 min)  
  Watch: Multiple Template Parameters & Non-Object Parameters (8 min)  
  Due: Fully functional C++ classes (5 pts)  
  Out: Code review assignments and rubrics  
2/18/26 Template Specialization and Variadic templates  
  Watch: Template Specialization (10 min)  
  Watch: Variadic Templates and Function Arguments (15 min)  
  Quiz: 3a  
  Due: Video Overview (5 pts)  
Week 7    
2/23/26 Status Discussions (Normal class time AND optional 5-7pm for additional team discussions)  
  Due: Code Reviews  
2/25/26 Status Discussions (Normal class time AND optional 5-7pm for additional team discussions)  
  Milestone: Full specs for Modules (including APIs and C++ class improvements)  
  Quiz: 3b  
2/27/26 Due: Code fixes based on peer reviews  
SPRING BREAK! (no class this week)  
Week 8    
3/9/26 Lambdas  
  Watch: Lambda Part I (15 min)  
  Watch: Lambda Part II (20 min)  
  Watch: Lambda Part III (optional: 8 min)  
  Lecture Slides [Lambdas]  
3/11/26 Ranges and Views  
  Watch: C++ Ranges (Only need to watch starting from 37:47 if you remember iterators and algorithms; 23 minutes)  
  In-Class Code  
  More Examples Range Code  
  Milestone: Initial working modules and improved C++ classes; Integrate additional template functionality.  

Unit IV: Writing Efficient Code

Date Discussion Topic
Week 9  
3/16/26 Compile-time execution
  Watch: Why constexpr Matters (6 minutes)
  Watch: More constexpr Math! (9 minutes)
  Watch: How To Use constexpr In C++23 (Can start at 12:00 and stop at 35:30, but you are welcome to watch the whole video; 24 minutes)
  In-Class Code
  More Examples constexpr Code
  Lecture Slides [constexpr]
  Lecture Slides [Software Testing (Part II)]
  Milestone: Integrate lambdas into project.
3/18/26 Value semantics
  Watch: Re-inventing move semantics in modern C++ in 13 minutes (optional: 13 minutes)
  Watch: Back to Basics: Rvalues and Move Semantics in C++ (59 minutes)
  In-Class Code
  Lecture Slides [Value and move semantics]
  Quiz: 4a
Week 10  
3/23/26 Measuring Efficiency + Profiling Code
  Watch: BENCHMARKING in C++ (15 min)
  Watch: Intro to Profiling (25 min)
  Lecture Slides [Edsger W. Dijkstra and Structured Programming]
  Milestone: Integrate compile-time operations OR value semantics into project.
3/25/26 Deep Dive: Implementing std::string
  Watch: The strange details of std::string at Facebook (31 min)
  Lecture Slides [Optimisation - Branch Prediction]
  Due: Code for improved C++ classes (5 pts) + initial working module (5 pts) classes
  Quiz: 4b
  Out: Code review assignments and rubrics

Unit V: Advanced Topics and Wrap-up

Date Discussion Topic
Week 11  
3/30/26 Using AI with C++
  Watch: Best Practices for AI Tool Use in C++ (62 min)
  Lecture Slides [Technical debt and other challenges]
  Milestone: Integration tests for full software system
4/1/26 Concepts
  Watch: Back to Basics: Concepts in C++ (61 min; watch at least first 38 min)
  Lecture Slides [A sneak peak into modern LLMs]
  Quiz: 5a
  Due: Code Reviews
Week 12  
4/6/26 Concurrency
  Watch: Back to Basics: Concurrency - at least until 44:30; through std::atomic
  Milestone: Alpha version of full software system complete.
4/8/26 Attributes and User-defined Literals
  Watch: Attributes (13 min)
  Watch: User Defined Literals // How to invent custom literal values (11 min)
  Quiz: 5b
Week 13  
4/13/26 Deep Dive: Sorting
  Milestone: Efficiency analyses with bottleneck identification
4/15/26 Understanding Code Licenses
Week 14  
4/20/26 Catchup or Special Topics
  Due: Code for final module (15 pts) + project video (5 pts)
  Out: Code review assignments and rubrics
4/22/26 Newer features in C++
Week 15 (Finals Week)
Sun 4/26/26 Due: Peer reviews of Final Projects!
4/29/26 Project Demonstrations and Final Quiz Redos
  Wednesday, April 29th, 3pm-5pm
  Quiz: redos
  Due: Code fixes before final grading