CSE 498 - Fall 2025 @ MSU
This course is divided up into six units, each of which is two to three weeks long. 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, 12:40pm to 2:30pm in STEM 2201); in addition to the discussion of material from the videos (which may include some elaboration on the content), classes will consist of live-coding demonstrations, live code reviews, quizzes, time for students to try out coding techniques, and time for the project groups to work together.
| Date | Discussion Topic | Notes |
|---|---|---|
| Week 1 | ||
| 1/13/25 | A review of 232 and 335 | |
| 1/15/25 | 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) |
Quiz: 1a |
| Week 2 | ||
| 1/20/25 | NO CLASS (MLK Day) | |
| 1/22/25 | C++ Core Guidelines Watch: 10 Core Guidelines You Need to Start Using Now (first 54 min + optional Q&A session) |
Out: Project Group Assignments |
| Week 3 | ||
| 1/27/25 | C++ Terminology and Basic Concepts Watch: Stack vs. Heap Memory in C++ (20 min) Watch: L-Values vs. R-Values (4:18 to 12:42; 8 min) Watch: Why is there Undefined Behavior in C++? (4 min) Read: Type Casting in C++ |
Quiz: 1b (rescheduled) |
| 1/29/25 | Compiling C++ into WebAssembly with Emscripten + Using Doxygen Install and Read Tutorial: Getting Started with Emscripten Watch: Doxygen Basics (35 min) Optional: Using WebAssembly and C++ to Make a Simple Game (72 min) |
Quiz: 1c Due: Specs for initial C++ classes; team agreements |
| Date | Discussion Topic | Notes |
|---|---|---|
| Week 4 | ||
| 2/3/25 | Avoiding Undefined Behavior Watch: Back To Basics: Undefined Behavior (62 min) |
|
| 2/5/25 | Tools: Setting up Testing Frameworks Watch: Back to Basics: C++ Testing (only 1:15 - 21:15) (20 min) Read over: Catch 2 - Tutorial Read over: Unit vs. Integration Testing |
Quiz: 2a Due: Initial working C++ classes, spec comments (extended to Friday (02/07/2025)) |
| Week 5 | ||
| 2/10/25 | Debugging your code Watch: Back To Basics: Debugging Techniques (65 min) |
|
| 2/12/25 | Memory Management + Casting Watch: C++ Memory Management Part 1: Pointer Primer, new, delete, macros (14 min) Watch: C++ Memory Management Part 2: Modern Pointers, shared, unique (23 min) |
Quiz: 2b Due: Test suite, class asserts |
| Date | Discussion Topic | Notes |
|---|---|---|
| Week 6 | ||
| 2/17/25 | Template Rules Watch: Back to Basics: Templates (Part 1 of 2) (61 min) |
Due: Fully functional initial C++ classes Out: Code review assignments and rubrics |
| 2/19/25 | Template Specialization and Variadic templates Watch: Back to Basics: Templates (Part 2 of 2) (67 min) |
Quiz: 3a |
| Week 7 | ||
| 2/24/25 | STATUS UPDATES | Due: Code Reviews |
| 2/26/25 | STATUS UPDATES | Due FRIDAY (2/28): Specs and tests for advanced C++ classes |
| SPRING BREAK! | (no class this week) | |
| Week 8 | ||
| 3/10/25 | Lambdas Watch: Back to Basics: Lambdas (67 min) |
|
| 3/12/25 | Ranges and Views Watch: Effective Ranges: A Tutorial for Using C++2x Ranges (63 min) |
Quiz: 3b Due: Initial working versions of advanced C++ classes; Integrate additional template functionality into C++ classes. |
| Date | Discussion Topic | Notes |
|---|---|---|
| Week 9 | ||
| 3/17/25 | Compile-time execution Watch: Introduction to constexpr (11 min) |
Due: Integrate lambdas into C++ classes. |
| 3/19/25 | Value semantics Watch: Back to Basics: Cpp Value Semantics (48 min) |
Quiz: 4a |
| Week 10 | ||
| 3/24/25 | Measuring Efficiency + Profiling Code Watch: BENCHMARKING in C++ (15 min) Watch: Intro to Profiling (25 min) (How to instrument code with above benchmarking) |
Due: Integrate compile-time operations OR value semantics into C++ classes. |
| 3/26/25 | Deep Dive: Implementing std::string Watch: The strange details of std::string at Facebook (31 min) |
Due: Fully functional advanced C++ classes Quiz: 4b Out: Code review assignments and rubrics |
| Date | Discussion Topic | Notes |
|---|---|---|
| Week 11 | ||
| 3/31/25 | Custom Memory Management Watch: Track MEMORY ALLOCATIONS the Easy Way in C++ (13 min) |
Due: Specs and tests for main C++ App |
| 4/2/25 | Concepts Watch: Back to Basics: Concepts in C++ (61 min) |
Quiz: 5a Due: Code Reviews |
| Week 12 | ||
| 4/7/25 | Deep Dive: Sorting Watch: Sorting Algorithms: Speed Is Found In The Minds of People (75 min + optional questions) |
Due: Alpha version of C++ app complete. |
| 4/9/25 | Attributes and User-defined Literals Watch: Attributes (15 min) Watch: User Defined Literals // How to invent custom literal values (11 min) |
Quiz: 5b |
| Week 13 | ||
| 4/14/25 | Concurrency Watch: Back to Basics: Concurrency - FIRST ~31 minutes only (to question break) |
Due: Efficiency reports |
| 4/16/25 | Understanding Code Licenses Watch: Free and Open Source software licenses explained (15 min) |
Quiz: redos |
| Date | Discussion Topic | Notes |
|---|---|---|
| Week 14 | ||
| 4/21/25 | Newer features in C++ Watch: C++23: An Overview of Almost All New and Updated Features (60 min) Optional: C++26 Preview - The Smaller Features (62 min) |
Due: Final Project! Out: Code review assignments and rubrics |
| 4/23/25 | FINAL PRESENTATIONS | |
| Week 15 | (Finals Week) | |
| 4/28/25 | FINAL PRESENTATIONS | Monday, April 28th, 12:45-2:45pm Due: Reviews of Final Projects! |
| 5/1/25 | FINAL CORRECTIONS | Due: Updates to Final Projects! (Final grading starts on 5/2/25) |