CSE 491

Logo

CSE 491 - Fall 2023 @ MSU

Home

Tentative Schedule

Blog Entries

Projects

Quizzes

Weekly Updates

Additional Resources

Tentative schedule

This course is divided up into six units, each of which is two to four weeks long. Before each class session, students will be expected to watch one or more videos (typically between 60 and 90 minutes worth) 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    
8/28/23 A review of 232 and 335  
8/30/23 Tools: Compiler Features and Static Analysis
Video: 31 nooby C++ habits you need to ditch (16 min)
Video: Software Development with C++: clang-format (9 min)
Video: Software Development with C++: Compiler Optimization Levels (13 min)
Out: Quiz 1
Week 2    
9/4/23 NO CLASS (Labor Day)  
9/6/23 C++ Core Guidelines
Video: 10 Core Guidelines You Need to Start Using Now (62 min)
Out: Project Group Assignments; Quiz redos
Week 3    
9/11/23 Ranges and Views
Video: C++20 Ranges in Practice (62 min)
 
9/13/23 Deep Dive: Implementing std::string + Using Doxygen
Video: The strange details of std::string at Facebook (31 min)
Video: Doxygen Basics (35 min)
Out: Quiz 2; Due: Project specs; team agreements

Unit II: Writing Reliable Code

Date Discussion Topic Notes
Week 4    
9/18/23 Avoiding Undefined Behavior
Video: Back To Basics: Undefined Behavior (62 min)
Due: Blog Post Proposal
9/20/23 Tools: Setting up Testing Frameworks
Video: Back to Basics: C++ Testing (only 1:15 - 21:15) (20 min)
Read over: Catch 2 - Tutorial
Read over: Unit vs. Integration Testing
Quiz redos; Due: Project Design, spec comments
Week 5    
9/25/23 Debugging your code
Video: Back To Basics: Debugging Techniques (65 min)
 
9/27/23 Memory Management + Casting
Video: C++ Memory Management Part 1: Pointer Primer, new, delete, macros (14 min)
Video: C++ Memory Management Part 2: Modern Pointers, shared, unique (23 min)
Video: Back to Basics: Casting (45 min)
Out: Quiz 3; Due: Test suite, proof-of-concept

Unit III: Writing Generic Code

Date Discussion Topic Notes
Week 6    
10/2/23 Template Rules
Video: Back to Basics: Templates (Part 1 of 2) (61 min)
 
10/4/23 Template Specialization and Variadic templates
Video: Back to Basics: Templates (Part 2 of 2) (67 min)
Quiz redos
Week 7    
10/9/23 Lambdas
Video: Back to Basics: Lambdas (67 min)
 
10/11/23 Catchup Out: Quiz 4; Due: Project Prototypes

Unit IV: Writing Efficient Code

Date Discussion Topic Notes
Week 8    
10/16/23 Concurrency (Guest lecture from Dr. Bill Punch)
Video: Back to Basics: Concurrency - FIRST ~31 minutes only (to question break)
Due: Blog Post Draft (Moved to 10/18)
10/18/23 STATUS UPDATES Due: Project Updates / Full Demos, Blog Post Draft
Week 9    
10/23/23 NO CLASS  
10/25/23 Measuring Efficiency + Profiling Code
Video: BENCHMARKING in C++ (15 min)
Video: Intro to Profiling (25 min) (How to instrument code with above benchmarking)
Quiz Redos
Week 10    
10/30/23 Value semantics
Video: Back to Basics: Cpp Value Semantics (48 min)
 
11/1/23 Custom Memory Management
Video: Track MEMORY ALLOCATIONS the Easy Way in C++ (13 min)
Quiz Redos; Due: Reviews of Blog Post Drafts
Week 11    
11/6/23 Compile-time execution
Video: Introduction to constexpr (11 min)
 
11/8/23 Meta-programming: building and using type traits
Video: Template Metaprogramming: Type Traits (part 1) (60 min)
OPTIONAL: Template Metaprogramming: Type Traits (part 2) (59 min)
Out: Quiz 5 Due: Updated plans

Unit V: Advanced Topics

Date Discussion Topic Notes
Week 12    
11/13/23 Deep Dive: Bit Sets
(No video – in class discussion and live coding only)
 
11/15/23 Advanced template use
Video: From C++ Templates to C++ Concepts - Metaprogramming: an Amazing Journey (53 min)
Quiz redos
Week 13    
11/20/23 Compiling C++ into WebAssembly with Emscripten
Video: Using WebAssembly and C++ to Make a Simple Game (72 min)
Due: Final Blog Post
11/22/23 Understanding Code Licenses
Video: Free and Open Source software licenses explained (15 min)
Quiz redos; Due: Feature Freeze; Efficiency reports?
Week 14    
11/27/23 Attributes + User-defined Literals
Video: Attributes (15 min)
Video: User Defined Literals // How to invent custom literal values (11 min)
 
11/29/23 Missing Topics: A whirlwind tour of additional uncovered material Quiz redos

Unit VI: Wrap-up

Date Discussion Topic Notes
Week 15    
12/4/23 Catchup / Special Topics Due: Reviews of final blog posts
12/6/23 FINAL PRESENTATIONS Due: Final Project!
Finals    
12/12/23 FINAL PRESENTATIONS Tuesday, Dec 12th, 12:45-2:45pm