# Research

I study the theory of distributed systems. I am particularly interested in understanding what can and cannot be solved in novel or exotic systems. Among other topics, I have studied the theory behind dynamic networks (in which the participants are unknown, communication can fail, and/or the network topology can change), peer-to-peer networks made up of smartphones communicating with direct radio links, vehicular ad hoc networks, and distributed coordination strategies from nature.

# Non-Technical Writing

In addition to my computer science research, I also write about the
intersection of technology and culture for a broader audience. I'm the author of six books,
including, most recently,
the *New York Times* bestseller, *Digital Minimalism: Choosing a
Focused
Life in a Noisy World.*
My titles have been translated into over 25 languages and have been featured
in many major publications and on many national TV/radio shows.
I also regularly write articles on these topics for a variety of outlets,
including *The New Yorker*, *The New York Times*, and
my long-running blog, *Study Hacks*, which receives
over 3 million visits a year.
For more on my non-technical writing, see my author web site.

# Funding

Recent funding sources for my work include NSF CCF award number 1733842, "AiTF: Collaborative Research: Algorithms for Smartphone Peer-to-Peer Networks," 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 2021, I am teaching **COSC 030: Math Methods for Computer
Science.** The course web site can be accessed through Canvas.

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

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

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

In fall 2019, 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 2019, I am teaching the required graduate theory course.
The course web site can be accessed here:
**COSC 545: Theory of Computation**.

In spring 2019, I am also teaching a doctoral seminar on theoretical
aspects of blockchain-based distributed ledger systems.
The course web site can be accessed here:
**COSC 841: Blockchain Theory**.

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

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