Teaching

My teaching emphasizes mathematical rigor, conceptual clarity, and the connection between theoretical foundations and real-world systems. I regularly teach courses in theoretical computer science, reinforcement learning, and cyber-physical systems at both the graduate and undergraduate levels.

I aim to help students develop a deep, principled understanding of computing systems, with an emphasis on reasoning from first principles and making assumptions explicit. My courses balance mathematical rigor with intuition, and I encourage students to engage actively with ideas rather than treat theory as a collection of techniques.

University of Colorado Boulder

Graduate courses

CSCI 7000 – Theoretical Foundations of Reinforcement Learning
Summer 2023, Spring 2024
This course explores the mathematical foundations of reinforcement learning, covering classical tabular methods and modern deep RL. Topics include value functions, Bellman equations, reward engineering, environment design, convergence guarantees, and scalability challenges.

CSCI 5854 – Foundations of Cyber-Physical Systems
Spring 2018
Introduces the design and verification of safety-critical cyber-physical systems using formal modeling, specification languages, and verification techniques for discrete, continuous, and hybrid dynamical systems.

CSCI 5454 – Design and Analysis of Algorithms
Fall 2017
A core graduate-level course covering foundational and advanced algorithms, with an emphasis on rigorous analysis techniques.

CSCI 5444 – Theory of Computation
Spring 2017, Fall 2018, Fall 2020–2023
Graduate-level introduction to automata theory, computability, and complexity. The course assumes mathematical maturity and, in later offerings, incorporated topics from computational learning theory.

Undergraduate courses

CSCI 3434 – Theory of Computation
Fall 2016, Fall 2023
Introductory theory course covering formal models of computation, from finite automata to Turing machines, as well as computability and complexity. Designed for students with minimal prior exposure to theoretical computer science.

CSCI 2270 – Data Structures
Spring 2019–2023
Core undergraduate course introducing the theoretical foundations and practical implementation of fundamental data structures.

Indian Institute of Technology Bombay

CS208 – Automata Theory and Logic
Summer 2012–13, Spring 2013–14, Spring 2014–15
Undergraduate course covering automata theory and foundational logic for computation, comparable in scope to CSCI 3434 at CU Boulder.

CS226 – Digital Logic Design (Theory + Lab)
Spring 2014–15
Course covering combinational and sequential circuit design, including synchronous and asynchronous logic.

CS620 – Modeling and Analysis of Cyber-Physical Systems
Autumn 2013–14
Graduate seminar focused on modeling and verification of cyber-physical systems, with emphasis on hybrid systems and formal verification tools.