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.


    To current Northeastern Students, read before you e-mail me on the following items):
  • Research: Check this link for research opportunities and projects.
  • Teaching: My previous course syllabi are usually online if you want to take a look--offerings are usually about 75% similar, though continuously evolving.
    • Summer 2023: 4300/5310 will be in Summer 1, online, asynchronous. I am likely to teach the course in DLang. Histroically I have taught in C++, while others teach in Java, TypeScript, or C++ as well. Programming language does not matter since we use OpenGL API and glsl (OpenGL shading langauge).
    • Summer 2023: 5350 will be Summer Full, online, asynchronous. This is effectively an applied computational geometry course. We'll focus on a few problems like computing convex hulls, 3D mesh representation, mesh simplification, triangulation, collision systems (various forms of concave and convex shape collisions, line-insteresction algorithms, triangle intersection), and a few algorithms on planning and motion (applications in games, robotics, and animation). We'll incorporate a refresher of math(trig, linear algebra, Big-O analysis) as needed. There will be some amount of research paper reading in this course.
    • Summer 2023: (Will be listed as either CS 4973 or 360/5360) Is a second graphics course and will be in Summer 2, online, asynchronous. 4300/5310 is not a prerequisite, this course focuses on ray tracing, and you can prior iterations of the course on my website as CS 4910/7380.
  • Enrollment/Waitlist: Please email your advisor if you think you have a special circumstance -- I have no power or ability to create, move, or add you to a filled course or create/change a waitlist
  • Teaching Assistant Positions: Please apply through the Khoury TA portal, and I will review your application if there is a vacancy.


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.


Computer Systems

Currently I am working with several students on building program analysis tools for working with data structures. Another undergraduate student is working on building tools to monitor the performance of programs.
  • Performance Engineering
    • SOSP 2020, Combating Run-time Performance Bugs with Performance Claim Annotations [Preprint
    • ICSME 2019, Lib Metamorphosis: A Performance Analysis Framework for Exchanging Data Structures in Performance Sensitive Application [Preprint] [Slides] [IEEE Link]

Program Analysis

Currently a graduate student and I are investigating a program analysis technique for monitoring threads in C and C++ programs.
  • Static/Dynamic Analysis
    • ICSE 2022, DrAsync: Identifying and Visualizing Anti-Patterns in Asynchronous JavaScript Preprint Talk
    • SOAP 2018, Iceberg: A Dynamic Analysis of Java Synchronized Methods Investigating Runtime Performance Variability [Preprint][ACM Link][Slides]
    • SOAP 2016, Iceberg: A Tool for Static Analysis of Java Critical Sections [Preprint][ACM Link][Slides]]


Some students will be joining my research group to understand cache-oblivious data structures and there performance in a graphics domain.
  • Software Visualization
    • IEEE VIS 2021, Daisen: A Framework for Visualizing Detailed GPU Execution [Preprint]
    • VISSOFT 2016, An Interactive Microarray Call-Graph Visualization [Preprint][IEEE Link]
    • VISSOFT 2016, Critical Section Investigator Building Story Visualizations with Program Traces [Preprint][IEEE Link][Video]
  • Gaming/Machine Learning
    • CHIPLAY 2018, Dungeon Digger: Apprenticeship Learning for Procedural Dungeon Building Agents [Preprint][ACM Link]


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
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.
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]


Computer Graphics

(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.


Computer Graphics
Check out Glimpse Podcast for more interviews with great scientists.

Personal Projects and Fun

Academic Lineage

Personal Projects
  • I enjoy tutoring programming, and am working on several Python lessons for first time programmers.
  • This is my undergraduate capstone project which I am quite proud of. It was a collaboration with a team of 5 total members in the spirit of a 'pixar' short. Click to watch: Shelved Souls (has sound)
Travel - It's of particular importance to travel the world, because then you can see the similarites we all have and the different ways of living across the planet. Learning and s haring with different people in the world makes us stronger.
  • I drove across the country twice (Boston to Portland Oregon) in 2014.
  • My travel outside of the U.S. includes:
    • (Barcelona) Spain [photos soon]2017
    • (Brussels) Belgium [photos soon]2018
    • (Amsterdam) Netherlands [photos soon]2018
    • (Vancouver, Toronto) Canada [photos soon]2022
    • (Arusha) Tanzania [photos soon] 2019
    • (Reykjavik) Iceland [photos soon] 2019
    • (Dublin) Ireland [photos soon] 2019
    • (Belfast) Northern Ireland [photos soon] 2019
    • (Bristol, London, Folkestone) England [photos soon] 2022
    • (Paris) France [photos soon] 2022
    • (Tel Aviv) Israel [photos soon] 2022, 2023
    • (Rome) Italy [photos soon]2023
  • I am always interested in learning about new cultures and places to travel near and far. The best part of working at a university is meeting people from all over the world.
  • Please introduce yourself, and help me pronounce your name if I do not pronounce it correctly.
  • I consider myself an amateur pizza maker, although this web link needs to be updated with more content. The art of pizza
  • I am a long distance runner. I have run the Columbus marathon twice(2009,2010), several half marathons(2009 - Columbus, 2011 - Indiana,2013 - Columbus,2018 BAA Half, 2019 Malden, MA, 2019 Baltimore, 2021 Cambridge), full Tough Mudder(2018), and the Boston Marathon in 2023.
    • I am slowly getting slower as the years go on. Results
  • I follow the NBA (very closely), track&field, and other competitive runners (i.e. marathon)
  • I enjoy playing the guitar, typically acoustic songs or alternative rock. Some favorite bands are:
  • I believe in funding small creators, artists, and independent developers.
Non-Academic Publications
  • Non-Academic Publications 2014, February 4. On Increasing Enrollment of Computer Science Courses. Tufts Daily. Link | PDF
Fun Facts
Please do not redistribute or host any materials without e-mailing me first. I generally am happy to share the latest .pdf or slide presentation with those who ask. Thank you for your time!