Current Courses

Here are the links to my active course webpages:

CSCI 4325-04
CSCI 6370-01

Past Courses

CSCI 4325: Automata, Formal Languages, and Computation.
The course presents formal computation models. Topics include finite state machine, pushdown state machine, Turing machine, halting problem, definition and properties of formal grammars and their languages as well as theory of computability and complexity including the complexity of optimization and approximation problems.

CSCI 8322/6730: Molecular & Unconventional Computing.
Computation exists beyond the world of digital electronics. It is occurring in every biological cell, in the neurons in your brain, and even among the most basic components of the universe. This course covers several models of computation that are each meant to capture the behavior of these systems, with an emphasis on those at the molecular/nano-scale. Students will devise algorithms, analyze constructions, and prove theorems for each of these models. Topics will include the theory of chemical reaction networks, computing with thermodynamics, molecular self-assembly, and more.

Teaching Philosophy

I strive to help students build intuition and confidence in theoretical computer science by emphasizing both rigor and creativity. My classes include frequent low-stakes quizzes, opportunities for problem-solving, and connections to active research questions.

Student Opportunities

I encourage motivated students to participate in undergraduate and graduate research experiences. Please reach out if you are interested in working on topics such as molecular computing, self-assembly, or computational complexity.