People of ACM - Daniel Spielman
January 21, 2014
Daniel Spielman is the Henry Ford II Professor of Computer Science, Mathematics, and Applied Mathematics at Yale University. Before that, he held assistant and associate professor positions at Massachusetts Institute of Technology. He received his B.A. in Mathematics and Computer Science from Yale in 1992, and his Ph.D. in Applied Mathematics from MIT in 1995.
Spielman received the 1995 ACM Doctoral Dissertation Award, the 2002 IEEE Information Theory Paper Award, the 2008 Gödel Prize (for his joint work on smoothed analysis of algorithms), the 2009 Fulkerson Prize, the 2010 Nevanlinna Prize, an inaugural Simons Investigator Award, and a 2012 MacArthur Fellowship. He is an ACM Fellow and a member of the Connecticut Academy of Science and Engineering.
His main research interests include the design and analysis of algorithms, graph theory, machine learning, error-correcting codes and combinatorial scientific computing. Spielman's contributions to his field include the development of methods for solving linear equations with millions of variables.
How has the MacArthur Fellowship that you received in 2012 impacted you career?
The prestige of the MacArthur Fellowship has opened many doors and created many opportunities for me. I think it helped convince the administration at Yale to let me create the new Yale Institute for Network Science. The new space will house faculty studying networks from fields including Engineering, Computer Science, and the Social Sciences. I will be co-directing the institute with Nicholas Christakis, a sociologist. We open this spring.
How has your designation as a member of the inaugural class of Simons Investigators impacted your ability to pursue your creative interests in computing and math?
My Simons Investigator award has been especially helpful because it has few restrictions on how it can be spent. The first thing I did with it was buy a large workstation to run code that I'd written for automatically generating proofs of inequalities. This was very helpful in my recent work on the Kadison-Singer Problem. I have also used the Simons award to bring many visitors to Yale to give lectures and to begin collaborations. I will soon use it for the more conventional purpose of supporting a postdoc.
Have you found that your early and sustained passion for mathematics and computer science offered satisfying opportunities for collaboration, cooperation and teamwork with colleagues?
Very much so. My best work has been done in long-lasting collaborations. It takes me a lot of time before I can easily work with someone. But, it is incredibly satisfying once I reach that point. You have to understand each other very well before you can successfully discuss complicated things over the phone.
Most of my papers have been the result of joint work with Shang-Hua Teng. We collaborated for three years before we wrote our first paper together. That one was on spectral partitioning. Our work on Smoothed Analysis was the result of many years of hard work. Shang-Hua spent many nights sleeping on our couch during those years. We also spent many nights working when we should have been sleeping. We wouldn't have been able to work that hard if we didn't really enjoy spending time together.
I now have many more people who I can work with in this way, including Jon Kelner, Nikhil Srivastava and Adam Marcus. Adam, Nikhil and I spent literally five years studying, and finally solving, the Kadison-Singer Problem.
In fact, I no longer see any point to working on problems on my own. It's much more fun and rewarding to collaborate.
As a computer scientist recognized for predicting the performance of optimization tools on real data, what advice would you give to young people considering careers in computing who want to make a difference in the world?
I have two pieces of advice for young people. Generally, the best way to make a difference is to think carefully about what to work on. I spend a lot of time thinking about what to work on next. If a project looks like it is going to fail or like it won't have much impact, I drop it and devote more time to another project. That said, you should always be working on something. Everyone dreams of suddenly having a brilliant insight that instantly solves a major problem. That has never happened to me: insight only comes after I've worked on a problem for a long time, and I've never found the path from insight to impact a simple one.
My second piece of advice is to realize that the code you write will be used in ways that you never expected. If you want your code to work in the bizarre ways that it will be applied, you need many ways of testing it. While I am mainly known for mathematical analysis, I also keep a large library of problems on which to test algorithms and I write a lot of code to test my algorithms. I recommend doing this often, because the more you do it, the easier it gets.