Our community has adopted a label that suggests our work and research is "scientific," implying that we follow the scientific method. We should therefore be able to formulate hypotheses, test them, and succeed in testing others' hypothesis and reproducing their experiments, which is how scientific theory is confirmed. But does computer science have these characteristics? The answer is sometimes. In computer science, we have a limited ability to predict the behavior of programs (complexity theory and computability are bright spots), but we certainly don't do too well at predicting or even identifying bugs, although we're getting better at it. Our productivity on the software side seems dismal compared to the increases in productivity in the computing hardware side. Do we know why? Is there a theory, and can it predict productivity? Can we change parameters to positively affect productivity? What hard problems remain in computer science that we should be tackling? Are we too timid in setting goals for ourselves in the discipline? What goals should we target? Would a significant change in computer architecture impact our ability to produce high-quality, high-performance, bug-free software? We will explore these questions in the hope of uncovering serious research opportunities for aspiring PhDs.
Vice President and Chief Internet Evangelist, Google