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 research interests are related to performance engineering (dynamic analysis) and software visualization.
Along with teaching and research work, I have juggled occasional consulting work as a 3D Senior Graphics Engineer.
My talk has been accepted to the inaugural Illinois Computer Sicence Summer Teaching Workshop for 2021.
I am serving on the Cppcon 2021 Program Committee and co-chairing the software design track.
My peer-reviewed talk at ACCU 2021 has been accepted and will be presented in March of 2021 (virtually).
I am serving on the SIG CSE 2021 Program Committee.
I am serving on the Cppcon 2020 Program Committee.
I am serving on the PLDI 2020 Artifacts Committee
I will be presenting at EuroLLVM 2020 a tutorial on common compiler optimizations.
I have given a talk on an Introduction to Cache Oblivious Algorithms at ACCU 2019 Belfast.
I will be serving on the EuroLLVM 2020 program committee in Paris, France this year.
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.
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|
|(NEU) CS 4910/7680||Special Topics in CS - Computer Graphics - Introduction to Non-Interactive Rendering Techniques||Su21, Su22|
|(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|
|(NEU) CS 4955||Teaching Computer Science||Sp20|
|(NEU) CS 5500||Foundations of Software Engineering||Sp20,F20, F21|
|(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|
|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||D Conference||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||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)||Slides|
|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||TBD|
|2014||1st Annual Tufts Ignite Talk||Code Advisor||TBD|
|2013||PLDI||Fun and Interesting Ideas||[Slides] [Paper]|
(Please see 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.