CSE 498

Logo

CSE 498 - Fall 2025 @ MSU

Home

Schedule

Projects

Project Groups

Quizzes

Weekly Updates

Resources

Tentative schedule

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.

Unit I: C++ Fundamentals

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
Quiz: 1b
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

Unit II: Writing Reliable Code

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

Unit III: Writing Generic Code

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.

Unit IV: Writing Efficient Code

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

Unit V: Advanced Topics

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

Unit VI: Wrap Up

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)