# Research

Distributed algorithms help agents work together to solve problems. My
research studies distributed algorithms *at the extremes*. For example,
scenarios where communication channels fail and network topologies change
unpredictably, or where participants are unknown, messages limited, and
computation primitive. I ask questions about what we can and cannot solve
under such circumstances.

I have three goals for this work: (1) help bring reliable distributed computing to increasingly challenging networking scenarios [e.g., vehicular networks, crowded spectrum networks, local peer-to-peer networks]; (2) help understand how communication systems in nature work so well given so little; (3) produce interesting new theory with impact beyond distributed algorithms.

# Funding

Recent funding sources for my work include NSF CCF award number 1320279, "AF: Small: Algorithms for Wireless Networks with Dynamic Links," NSF CCF award number 1649484, "EAGER: Noisy Computation of Distributed State Machines," the Ford Motor Company University Research Program, and the Georgetown Security and Software Engineering Research Center.

# Training

Before coming to Georgetown I was at MIT, where I received my PhD working with Nancy Lynch in the Theory of Distributed Systems group, and spent two years as a postdoctoral associate working with Hari Balakrishnan in the Networks and Mobile Systems group.

# Teaching

In fall 2017, I am teaching the required undergraduate
algorithms course.
The course web site can be accessed here:
**COSC 240 - Introduction to Algorithms**.

In spring 2017, I am teaching the graduate-level theory course.
The course web site can be accessed here:
**COSC 545
- Theory of Computation**.

In spring 2017, I am also teaching
a doctoral seminar on biological algorithms.
The course web site can be accessed here:
**COSC 844
- Doctoral Seminar in Biological Algorithms**.

In fall 2016, I am teaching the department's undegraduate
discrete math requirement.
The course web site can be accessed here:
**COSC 030 - Math Methods for Computer
Science**.

In spring 2016, I am teaching the graduate-level theory course.
The course web site can be accessed here:
**COSC 545
- Theory of Computation**.

In spring 2016, I am teaching a graduate-level course on distributed
algorithms. The course web site can be accessed here:
**COSC 546 - Distributed Algorithms**.

*(Notice, this course is also open to undergraduates
who are seniors and computer science majors: contact me if you are
interested.)*

In fall 2015, I am teaching the department's undergraduate
discrete math requirement.
The course web site can be accessed here:
**COSC 030 - Math Methods for Computer
Science**.

In fall 2014, I am teaching the department's undergraduate
discrete math requirement.
The course web site can be accessed here:
**COSC 030 - Math Methods
for Computer Science**.

In spring 2014, I am teaching the graduate-level theory course.
The course web site can be accessed here:
**COSC 545 - Theory of
Computation**.

In fall 2013, I am teaching an introductory undergraduate course
on distributed algorithms.
The course web site can be accessed here:
**COSC 242 - Algorithms
for Distributed Systems**.

In spring 2013, I am teaching the graduate-level theory course.
The course web site can be accessed here:
**COSC 545 - Theory of
Computation**.

In spring 2013, I am also teaching a graduate-level topics course on wireless network
algorithms. The course web site can be accessed here:
**COSC 747 - Topics in Wireless Network Algorithms**.

In spring 2012, I am teaching the graduate-level
theory course. The course web site can be accessed here:
**COSC 545 - Theory of Computation**.

In fall 2011, I taught a graduate reading
course that tackles my research interest in unconventional
distributed algorithm theory. The course web site
can be accessed here:
**COSC 547 - Distributed
Computing Outside the Box****.
**