CSE 491 - Fall 2023 @ MSU
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.
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 |
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 |
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 |
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: |
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 |
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 |
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 |