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 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.
Course Number | Title | Semester |
---|---|---|
(NEU) CS 4300/5310 | Computer Graphics (Ugrad/Grad) | Sp18, F18, Su19, Su20, Su21,F21, Sp22, Su22,F22,Su23 |
(NEU) CS 4910/7680 | Special Topics in CS - Computer Graphics - Introduction to Non-Interactive Rendering Techniques | Su21, Su22 |
(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 |
(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 |
Year | Event | Title | Resources |
---|---|---|---|
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.pdf | [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 | 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 | 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.