My research focuses on reasoning about knowledge and uncertainty, and its applications to distributed computing, AI, security, and game theory, although I've also done work (and continue to be interested in) such topics as fault tolerance in distributed computing, modal logic, causality, program verification, and programming language semantics. My work lies at the boundary of a number of fields. I recently gave a talk in the economics department at Princeton where I described myself as someone with a Ph.D. in mathematics, who calls himself a computer scientist, and is giving a talk to economists about a subject mainly studied by philosophers. That's probably the best one-sentence description I can give. If you'd like more details, check my
I'm now department chair, so I will typically be teaching only one course a year. alternating between teaching
When I get done with being chair, I expect to go back to teaching undergarduate course like CS2800 (formerly CS280).