This is me
(He/Him; Phonetic pronounciation: (Mike: /ˈmaɪk/) (Shah: /ˈʃɑ/))
I am primarily a Senior Lecturer at Yale University at the School of Engineering & Applied Science. My primary teaching and research interests are in real-time computer graphics, building game engines, computer systems, software visualization, and education
Along with teaching and research, I juggle occasional consulting work as a 3D Senior Graphics Engineer and Technical Trainer. My [Youtube] channel is also frequently updated with training and educational materials.

My research interest is in analyzing the performance of real time systems. Typically applications where performance matters are in the domains of game engines, computer graphics, and intensive system applications. I perform my research by building static analysis, dynamic analysis, and software visualization tools. [Google Scholar Link]
Current Yale students wanting to get involved with my research can browse some graphics and systems research projects and various Sidequests to get some ideas of projects that may be mutually interesting projects. For students wanting to do Senior Projects with me, I strongly prefer to take on students who have taken at least 1 elective course with me (e.g. Game Engines or Computer Graphics) or have otherwise served as a ULA/TF with me. The reason for this policy, is it ensures we have a common interest, we have worked together in some capacity, and I will have a good understanding of where I can add value on a project/thesis (ideally) in the domain of one of these courses that also overlaps with your interest.
Michael D Shah
This research paper describes efforts to teach as modern of a programming API as possible, while otherwise preparing students for the future.
Michael D Shah
This paper discusses my course on 'building game engines' from scratch, and why this approach benefits students (as opposed to proprietary tools) for the long term in an industry that evolves quickly.
Michael D Shah, Sherry Qiu, Thomas Walter, Holly Rushmeier, Kim RM Blenman
This is a paper regarding the difficulties of developing software and maintaining dependencies over time -- especially for niche (but critical to infrastructure) software in the medical world. This publication presents our experience from a real world tool built by Yale doctors and authors of this paper.
MD Shah
This was a course presented at SIGGRAPH on an introduction to scripting in Blender3D. It was designed to be a very accessible look at programming 3D tools, with some fun geometry algorithms. The end result is that if you can program, experiment, and used Blender3D as a sandbox -- you may gather some cool insights and build useful tools for the 3D pipeline.
MD Shah
This work is on a new course I developed to open computer graphics to a wider diversity of students. The course is programming-language agnostic and focuses on image rendering using path tracing with utilizing only freely available resources
F Muzny, MD Shah
This is an adaptable curriculum for training undergraduate and graduate teaching assistants with emphasis on both technical training and training on interpersonal skills and communication.
J Merrin, M Shah
This is an early work on a strategy for creating dynamic vertex hierachies for view-dependent mesh simplification.
A Turcotte, MD Shah, MW Aldrich, F Tip (Best Artifact Award)
Dr. Async is a lightweight static analysis for identifying anti-patterns in promise-based JavaScript. The accompaning analysis is complemented with a novel software visualiztion tool for examining asynchronous JavaScript. This paper received a best artifact award.
Y Sun, Y Zhang, A Mosallaei, MD Shah, C Dunne, D Kaeli
Daisen is a Web-Based interactive visualization for examining GPU execution traces targetted towards GPU designers.
R Toppur, MD Shah
This is a sample curriculum to integrate CUDA programming into non-traditional CUDA domains (e.g. security) to expose students to high performance computing (HPC) who would otherwise not be exposed.
Z Casey, MD Shah
This is a framework for writing performance claim annotations ("performance assertions") for use in a dynamic analysis -- consider this an "exception" but for performance metrics.
M Shah
This work presents a mtehodology for exchanging data structures automatically to test performance of data structures.
EC Sheffield, MD Shah
This is work on Procedural Conteng Generation (PCG) for game level design using reinforcement learning
MD Shah, SZ Guyer
Iceberg is a Java-based dynamic analysis built on the Soot framework for finding performance variability in critical sections.
MD Shah, SZ Guyer
This is a collection of software visualizations used to build a 'story' capturing performance features of a program in a notebook like way.
MD Shah, SZ Guyer
A novel software visualization tool using for representing both static and dynamic call graph information of programs. Real-time Software Visualization helps handle challenge of understanding large software applications.
MD Shah, SZ Guyer
Iceberg is a static analysis for detecting possible overuse of the 'synchronized' keyword in Java.
The following table lists all of the courses I have developed and previously taught.
| Course Number | Title | Semester |
|---|---|---|
| (Yale) CPSC 4792/5792 | Real-Time Computer Graphics (Ugrad/Grad) | Sp25, Sp26 |
| (Yale) CPSC 4791/5791 | Building Game Engines (Ugrad/Grad) | F24,Sp25,F25,F26 |
| (Yale) CPSC S4794 | Applied Computational Geometry Programming (Ugrad) | Su26 |
| (Yale) CPSC 3231 | Introduction to Computer Systems (Ugrad) | F26 |
| (Yale) CPSC 3230 | Computer Systems (Ugrad) | F24,F25,Sp26 |
| (NEU) CS 4300/5310 | Computer Graphics (Ugrad/Grad) | Sp18, F18, Su19, Su20, Su21, F21, Sp22, Su22, F22, Su23, F23, Sp24, F24 |
| (NEU) CS 4360/5360 (Formerly 4910/7680) | Computer Graphics - Non-Interactive Rendering Techniques | Su21, Su22, Su23, F23 |
| (NEU) CS 7380 | CS - Advanced Computer Graphics | Su24 |
| (NEU) CS 5350 | CS - Applied Geometric Representation and Computation | Su23, Su24 |
| (NEU) CS 4910/7680 | Special Topics in CS - Performance Engineering | Su20 |
| (NEU) CS 3520 | Programming C++ | Su21, F22 |
| (NEU) CS 5008/5009 | Data Structures, Algorithms, and Their Applications within Computer Systems | Sp21, Sp22 |
| (NEU) CS 3650 | Computer Systems | F17, F18, F19 |
| (NEU) CS 5600 | Computer Systems (Grad) | Su18 |
| (NEU) CS 4850/5850 | Building Game Engines (Ugrad/Grad) | Sp18, Sp19, Sp21, Sp23, Sp24 |
| (NEU) CS 4955 | Teaching Computer Science | Sp20 |
| (NEU) CS 5500 | Foundations of Software Engineering | Sp20, F20, F21, Sp23, F23 |
| (NEU) CS 5006 | Algorithms (Align-Grad) | Sp19, Su19 |
| (NEU) CS 5007 | Computer Systems (Align-Grad) | Su18, Sp19, Su19 |
| (NEU) CS 5340 | Human Computer Interaction (Grad) | F17 |
| (NEU) CS 1802 | Discrete Mathematics | F17 |
| (Tufts) Comp 11 | Introduction to Computer Science | Su17 |
A listing of my courses that I TA'd, co-taught, or served as a lab instructor while at Ohio State and Tufts University from 2010-2017 are here
This section contains peer reviewed conference talks, guest lectures, invited lectures, and some research competitions I have participated in.
The good news is, most of these talks are freely recorded and I have linked the public recordings. The 'Private slides' are simply linked so I can eaisly click and find my talks. Unfortunately in the age of LLMs, I have decided to keep more resources private once the recordings are released. If your company would like me to come talk about a particular topic, please reach out. Please note 'Public' does not give you the right to freely distribute (steal), take credit, or make derivative works without written permission first.
| Year | Event | Title | Resource(s) | 2026 | Graphics Programming Conference | Coming soon! | [Private Slides] [Public Video TBD] | 2026 | Global Cpp | Back to Basics: Computer Systems | [Private Slides] [Public Video TBD] | 2026 | Cppcon | Code You Didn't Write: Understanding Large and Unfamiliar Codebases | [Private Slides] [Public Video TBD] | 2026 | Cppcon | Back to Basics: Computer Systems | [Private Slides] [Public Video TBD] | 2026 | Cppcon | Graphics Programming with SDL Part 2 | [Private Slides] [Public Video TBD] | 2026 | DConf | 3D Graphics Engine in D | [Private Slides] [Public Video TBD] | 2026 | SIGGRAPH | Educators Forum: Teaching OpenGL 4.5/4.6 in Introductory Computer Graphics: A Hidden Sweet Spot in Graphics API Education Accessibility | [Public Slides] | 2026 | SIGGRAPH | Educators Forum: Teaching Building Game Engines: An entry-level course on game programming without pre-built Game Engines | [Public Slides] | 2026 | Cpp Africa | Back to Basics: Computer Systems | [Private Slides] [Public Video] | 2026 | Illinois Computer Science Teaching Workshop | Localize Complexity and Slow Down Your Teaching | [Public Slides] | 2026 | NYC++ | Performance is your currency / Back to Basics: Computer Systems | [Private Slides] | 2026 | NDC Toronto | Techniques for Wielding Data and Behaviors | [Private Slides] [Public Video] | 2026 | Brown University | Game Engine Concurrency Introduction | [Public Slides] |
|---|---|---|---|
| 2026 | Yale | Guest Talk for Amoriem Labs - Game Development Frame Breakdown | [Public Slides] |
| 2025 | Graphics Programming Conference | After the Tutorial: Where to Continue your Graphics Programming Journey | [Private Slides] [Public Video] | 2025 | Code::Dive | Essential Tooling for Safer C++ | [Private Slides] [Public Video] | 2025 | CppCon | Graphics Programming with SDL 3 | [Private Slides] [Public Video] | 2025 | CppCon | Back to Basics: Ranges | [Private Slides] [Public Video] | 2025 | DConf | All in on DLang: Why I pivoted to D for web, teaching, and graphics in 2025 and beyond! | [Private Slides] [Public Video] | 2025 | SIGGRAPH | Birds of a Feather: SDL | [Public Panel audio] | 2025 | C++ North | Graphics Programming with SDL 3 | [Private Slides] [Public Video] | 2025 | C++ on Sea | Understanding large and unfamiliar codebases | [Private Slides] [Public Video] | 2025 | C++ FRench User Group (FRUG) | Understanding large and unfamiliar codebases | [Private Slides] [Public Video] | 2025 | San Diego C++ User Group Meetup | Understanding large and unfamiliar codebases | [Private Slides] [Public Video] | 2025 | Illinois Computer Science Teaching Workshop | Revisiting the D Programming Language for Teaching | [Public Slides] [Public Video] | 2025 | VisGap (Co-located with EuroVis) | Coming in June | [Public Slides TBD] | 2025 | NJPLS | Revisiting the D Programming Language (Hosted at Jane Street) | [Private Slides] [Public Video] |
| 2025 | ACCU | The Case for Graphics Programming using the D Language | [Private Slides] [Public Video] |
| 2024 | Yale | Guest Talk for Amoriem Labs - What Goes Into Game Development | [Public Slides] |
| 2024 | NYC++ Meetup | The Little Talk of Semaphores -- and a Tour of C++ Concurrency | [Private Slides] |
| 2024 | DConf 2024 | The Case for Graphics Programming in Dlang Part 2 - Tech Demo | [Private Slides] [Public Video] | 2024 | CppIndia | Getting Started with Modern C++ - A Tour of Features | [Private Slides] [Public Video] | 2024 | C++ North | A Study of Plugin Architectures for Supporting Extensible Software | [Private Slides] [Public Video] | 2024 | SIGGRAPH | There Can Be (at least) Two Introductory Graphics Courses | [Public Slides] | 2024 | SIGGRAPH | Introduction to Scripting in Blender 3D | [Private Slides] | 2024 | Private Corporate Event at a Gaming Company | Title/abstract embargo to be released in 2029 | [Talks of this type available for corporate training] | 2024 | C++ FRench User Group (FRUG) | Fundamentals of ConcurrencyThreads, Pools, and Patterns -- in C++ | [Private Slides] [Public Video] | 2024 | ACCU 2024 | How DLang Improves my Modern C++ and Vice Versa | [Private Slides] [Public Video] | 2024 | Munich C++ User Group -- invited (virtual) speaker | The Flyweight Design Pattern | [Private Slides] [Public Video] | 2024 | DConf Online | The Case for Graphics Programming in Dlang - Part 2 | [Private Slides] [Public Video] | 2024 | C++ Online | The Strategy Design Pattern | [Private Slides] [Public Video] | 2024 | Tufts University SIGGRAPH Guest Lecture | Introduction to Scripting in Blender3D | [Private Slides] | 2024 | MUC++ | Making your program Fly! The Flyweight Pattern | [Private Slides] [Public Video] | 2024 | FOSDEM | The D Programming Language for Modern Open Source Development | [Private Slides] [Public Video] | 2024 | Invitation for Guest Lecture on Design patterns at CFTT - University of Tehran | Thinking about Design with Patterns -- Visitor Pattern -- in C++ | [Private Slides] [Public Video] | 2023 | Meeting Cpp 2023 | Introduction to C++ Containers-- Know Your Data Structures | [Private Slides] [Public Video] | 2023 | Blender Conference 2023 | Getting Started with Scripting in Python | [Private Slides] [Public Video] | 2023 | Cppcon 2023 | Back to Basics: Functions | [Private Slides] [Public Video] | 2023 | DConf 2023 (With 4 students) | A Semester at University: Teaching Software Engineering in DLang | [Private Slides] [Public Video] | 2023 | cppIndia Conference | Optimization Design Patterns | [Private Slides] [Public Video] | 2023 | C++ Italy Conference | Optimization Design Patterns | [Private Slides] [Public Video] | 2023 | Core CPP | Running Away From Computation -- An Introduction | [Private Slides] [Public Video] | 2023 | MIT Independent Activities Period - D Programming Workshop | Introduction to Phobos Standard Library | [Private Slides] | 2022 | DConf Online 2022 | Engineering a Ray Tracer (The Next Weekend) | [Private Slides] [Public Video] [Interview Public Video] | 2022 | Handmade Seattle 2022 - Systems Programming Conference | Introduction to Memory Allocation Design and Implementation | [Private Slides] [Video was lost or not recorded as far as I am aware] | 2022 | 2022 - Northeastern University Mathematics Club | Introduction to Computational Geometry | [Public Video] | 2022 | CppCon 2022 | Software Design Track - The Observer Pattern | [Private Slides] [Public Video] | 2022 | CppCon 2022 | Back to Basics - Debugging | [Private Slides] [Public Video] | 2022 | Core CPP | Introduction to Smart Pointers and Why | [Private Slides] [Public Video] | 2022 | Career Seminar | Northeastern Vancouver Campus Visit | [Public Slides] | 2022 | DConf 22 | Ray Tracing in (Less than) One Weekend with Dlang | DConf 2022 | [Private Slides] [Public Video] | 2022 | C++ on Sea | Beginners Guide to C++'s Best Kept Secret - std::algorithm | [Private Slides] [Public Video] | 2022 | ACCU | How I Teach Modern C++ One Pixel at a Time | [Private Slides] [Public Video] |
| 2021 | CPPCON | Back to Basics: Pointers | [Private Slides] [Public Video] |
| 2021 | CPPCON | Back to Basics: Concurrency | [Private Slides] [Public Video] |
| 2021 | CPPCON | Software Design: The Factory Pattern | [Private Slides] | 2021 | First Byte Student Organization Invited Guest Speaker | Teaching in One Minute | [Public Slides] | 2021 | Inaugural Illinois Computer Science Summer Teaching Workshop | Evolving the Course Website and Lecture for Online Teaching | [Public Slides] |
| 2021 | (Invited Talk) Boston Fusion | Game Engines - What Problem Are you trying to Solve? | [Private Slides] |
| 2021 | Northeastern Workshop | Building a Game Portfolio | [Public Slides] |
| 2020 | CPPCON | Back to Basics: Design Patterns | [Private Slides] [Public Video] |
| 2020 | Northeastern U. - Khoury College Tech Talks | Performance Engineering and Program Analysis | [Public Slides] |
| 2019 | ACCU Autumn | Introduction to Cache Oblivious Algorithms | [Private Slides] |
| 2019 | Northeastern+MIT LLVM Seminar | Introduction to Program Analysis | [Private Slides] |
| 2019 | Northeastern+MIT LLVM Seminar | Introduction to Clang | [Private Slides] |
| 2019 | Northeastern+MIT LLVM Seminar | Introduction to LLVM | [Private Slides] |
| 2019 | Northeastern U. ACM Student Chapter | Introduction to Program Analysis | [Private Slides] |
| 2019 | Northeastern U. Workshop | Building a Game Portfolio | [Public Slides] |
| 2018 | Northeastern U. Teaching Faculty Seminar | Introduction to Github Classroom | [Private Slides] [Public Video] |
| 2018 | CPPCON | Let's Build an OpenGL Logger | [Private Slides] [Public Video] |
| 2018 | Northeastern U. Workshop | CS1200 Careers Talk | [Public Slides] |
| 2018 | Northeastern U. Workshop | Building a Game Portfolio | [Public Slides] |
| 2018 | Northeastern U. Workshop | (Guest Lecture Nathaniel Tuck) Operating Systems | [Private Slides] |
| 2018 | FOSDEM | Introduction to LLVM | [Public Video] |
| 2017 | Northeastern U. Workshop | Getting a job in the game industry | [Public Slides] |
| 2017 | (Guest Lecture) MIT Performance Engineering | Hands on Introduction to LLVM Lecture | [Private Slides] |
| 2016 | MIT LLVM Seminar | Profile-Guided Optimization LLVM Lecture at MIT | [Private Slides] |
| 2016 | Tufts University - 4th Tufts Ignite Talk | (CSI) Critical Section Investigator (3rd Place Talk) | N/A |
| 2016 | MIT LLVM Seminar | Introduction to LLVM | [Private Slides] |
| 2016 | Tufts University - Teaching Fellow talk | Introduction to Parallelism | [Private Slides] [Public Video] |
| 2016 | (Invited Talk) Cambridge Pint of Science | How do Computers Compute so Fast | [Private Slides] |
| 2016 | 19th Annual Tufts Graduate Student Research Symposium | TBD | N/A |
| 2015 | Tufts University - 3rd Annual Tufts Ignite Talk | Microarray Visualization (3rd Place Talk) | N/A |
| 2015 | PLMW | Programming Language Mentoring Workshop One-Minute Madness Talk | N/A |
| 2014 | Tufts University | 18th Annual Tufts Graduate Student Research Symposium | N/A |
| 2014 | (Guest Lecture for Remco Chang) | Tufts University - Computer Graphics Shaders | N/A |
| 2014 | 1st Annual Tufts Ignite Talk | Code Advisor | N/A |
| 2013 | PLDI - Fun and Interesting Thoughts (FIT) | Hot Streak and Cold Streak Programming Tools | [program] |
(Please see my CV for a fully up to date list) I have participated in helping create many university organizations, and served in several roles to improve the academic experience of undergraduate and graduate students.
These days I am active in various professional programming conferences like CPPCON and serving on programming committees for SIGGRAPH and SIGCSE in various capacities. I have even arranged my own conference to bring experts together. Details can be found at: D Language Symposium.
Note: I am slowly populating this list -- more to come!