I am currently an Associate Teaching Professor at Northeastern University in the Khoury College of Computer Sciences. My primary teaching interests are in computer systems and computer graphics. My current research interests are in the domains of computer graphics, software visualization/program analysis, and education.
Along with teaching and research, I have juggled occasional consulting work as a 3D Senior Graphics Engineer and Technical Trainer.
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 Northeastern students wanting to get involved with my research can browse various Sidequests to get some ideas of projects that may be mutually interesting projects.
F Muzny, MD Shah
Links: [ Published Link]
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
Links: [ Published Link]
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)
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
Links: [ Published Link]
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
Links: [ Published Link]
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.
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.
The following table lists all of the courses I have developed and previously taught.
|(NEU) CS 4300/5310||Computer Graphics (Ugrad/Grad)||Sp18, F18, Su19, Su20, Su21,F21, Sp22, Su22,F22,Su23,F23|
|(NEU) CS 4360/5360 (Formerly 4910/7680)||Computer Graphics - Non-Interactive Rendering Techniques||Su21, Su22,Su23, F23|
|(NEU) CS 5350||CS - Applied Geometric Representation and Computation||Su23|
|(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|
|(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|
|2023||Meeting Cpp 2023||Introduction to C++ Containers-- Know Your Data Structures||[Slides]||2023||Blender Conference 2023||Getting Started with Scripting in Python||[Slides]||2023||Cppcon 2023||Back to Basics: Functions||[Slides]||2023||DConf 2023 (With 4 students)||A Semester at University: Teaching Software Engineering in DLang||[Slides]||2023||cppIndia Conference||Optimization Design Patterns||[Slides]||2023||C++ Italy Conference||Optimization Design Patterns||[Slides]||2023||Core CPP||Running Away From Computation -- An Introduction||[Slides]||2023||MIT IAP - D Programming Workshop||Introduction to Phobos Standard Library||[Slides]||2022||DConf Online 2022||Engineering a Ray Tracer (The Next Weekend)||[Slides]||2022||Handmade Seattle 2022 - Systems Programming Conference||Introduction to Memory Allocation Design and Implementation||[Slides]||2022||2022 - Northeastern University Mathematics Club||Introduction to Computational Geometry||[Slides]||2022||CppCon 2022||Software Design Track - The Observer Pattern||[Slides]||2022||CppCon 2022||Back to Basics - Debugging||[Slides]||2022||Core CPP||Introduction to Smart Pointers and Why||[Slides]||2022||Career Seminar||Northeastern Vancouver Campus Visit||[Slides]||2022||DConf 22||Ray Tracing in (Less than) One Weekend with Dlang | DConf 2022||[Slides]||2022||C++ on Sea||Beginners Guide to C++'s Best Kept Secret - std::algorithm||[Slides]||2022||ACCU||How I Teach Modern C++ One Pixel at a Time||[Slides]|
|2021||CPPCON||Back to Basics: Pointers||[Slides tbd]|
|2021||CPPCON||Back to Basics: Concurrency||[Slides tbd]|
|2021||CPPCON||Software Design: The Factory Pattern||[Slides tbd]||2021||First Byte Student Organization Invited Guest Speaker||Teaching in One Minute||[Slides]||2021||Inaugural Illinois Computer Science Summer Teaching Workshop||Evolving the Course Website and Lecture for Online Teaching||[Slides]|
|2021||(Invited Talk) Boston Fusion||Game Engines - What Problem Are you trying to Solve?||[Slides]|
|2021||Northeastern Workshop||Building a Game Portfolio||[Slides]|
|2020||CPPCON||Back to Basics: Design Patterns||[Slides]|
|2020||Northeastern U. - Khoury College Tech Talks||Performance Engineering and Program Analysis||[Slides]|
|2019||ACCU Autumn||Introduction to Cache Oblivious Algorithms||Slides to be posted|
|2019||Northeastern+MIT LLVM Seminar||Introduction to Program Analysis||[Slides]|
|2019||Northeastern+MIT LLVM Seminar||Introduction to Clang||[Slides]|
|2019||Northeastern+MIT LLVM Seminar||Introduction to LLVM||[Slides] [files]|
|2019||Northeastern U. ACM Student Chapter||Introduction to Program Analysis||[Slides]|
|2019||Northeastern U. Workshop||Building a Game Portfolio||[Slides]|
|2018||Northeastern U. Teaching Faculty Seminar||Introduction to Github Classroom||[Slides] [Video]|
|2018||CPPCON||Let's Build an OpenGL Logger||[Slides and Video]|
|2018||Northeastern U. Workshop||CS1200 Careers Talk||[Slides]|
|2018||Northeastern U. Workshop||Building a Game Portfolio||[Slides]|
|2018||Northeastern U. Workshop||(Guest Lecture Nathaniel Tuck) Operating Systems||[Slides]|
|2018||FOSDEM||Introduction to LLVM||[Slides and Video]|
|2017||Northeastern U. Workshop||Getting a job in the game industry||[Slides]|
|2017||(Guest Lecture) MIT Performance Engineering||Hands on Introduction to LLVM Lecture||[Slides]|
|2016||MIT LLVM Seminar||Profile-Guided Optimization LLVM Lecture at MIT||[Slides]|
|2016||Tufts University - 4th Tufts Ignite Talk||(CSI) Critical Section Investigator (3rd Place Talk)||N/A|
|2016||MIT LLVM Seminar||Introduction to LLVM||[Slides]|
|2016||Tufts University - Teaching Fellow talk||Introduction to Parallelism||[Video]|
|2016||(Invited Talk) Cambridge Pint of Science||How do Computers Compute so Fast||[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)||[Slides]|
|2015||PLMW||Programming Language Mentoring Workshop One-Minute Madness Talk||[Slide]|
|2014||Tufts University||18th Annual Tufts Graduate Student Research Symposium||TBD|
|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 Ideas||[Slides] [Paper]|
(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.