Hello! I'm Daniel Schwartz-Narbonne, a post-doctoral researcher in Computer Science at the Courant Institute of Mathematical Sciences at New York University.
Computers are becoming more and more complex, but our human ability to manage that complexity is not following suit. My work aims to generate the automated techniques and tools programmers need to effectively debug complex systems. In particular, my research has been focused on two related tracks:
Debugging Concurrent Systems
Concurrency has been both a blessing and a curse. Concurrent systems offer access to increased computing resources, creating the potential for dramatic improvements in both efficiency and performance. Unfortunately, they also the potential for new classes of bugs, which can be difficult to detect and explain.
For my doctoral dissertation, I developed parallel assertions which allow programmers to add assertions to their programs which catch common concurrency bugs, and implemented a runtime checker which detects assertions violations as they happen at runtime.
Concurrency is also an inherent problem in hardware design. I have been engaged in several projects which developed high-level tools and languages to help engineers create provably correct concurrent hardware designs. Links to these papers are available on my Research page.
Explaining Program Faults
Detecting bugs is only half the battle. Programmers still require a way to localize and remove the bugs that they find. In collaboration with my post-doctoral supervisor Thomas Wies, I have been developing techniques that automatically provide programmers with a concise explanation of detected program faults. Currently, this work has focused on sequential systems; I hope to extend it to cover concurrent faults as well.