Bill Gates addressed several hundred computer science faculty at the recent Microsoft Research Summit. In his address, Bill pondered why more young people are not attracted to the computer sciences. There is considerable evidence that the number of students majoring in comp sci has plummeted in the United States and Europe and that fewer and fewer are considering careers in software. I agree with Bill that our field remains incredibly exciting; I've often lectured on the privilege and the responsibility of being a software professional. At the same time, the reasons behind this decline are complex: there's residual damage from the sucking vortex that was the dot com bust at the turn of the millennium; the press regarding and the reality of outsourcing does raise the specter of fear, uncertainty, and doubt in the minds of those entering the work force seeking an inspiring apprenticeship and a sustainable career; the decline of attention paid to science and math in K-12 has clogged the pipeline; the decline of federal funding for basic research has thrown cold water on radical innovation; the commoditization of software in certain domains has made some segments of our industry downright boring.
Intentional software research by industry is one bright spot in this turbid picture. Microsoft Research has a variety of projects focused on programming principles and tools, systems and networking, computer-mediated living, and machine learning and perception. IBM Research has a much broader mission, covering chemistry, electrical engineering, materials, mathematics, physics, and services as well as the computer sciences wherein there are projects associated with algorithms and theory, artificial intelligence, communications and networking, computational biology and medical informatics, computer architecture, data management, distributed and fault tolerant computing, graphics and visualization, human computer interaction, knowledge discovery and data mining, mobile computing, multimedia, natural language processing, operating systems, performance modeling, programming languages and software engineering, security, services, storage, supercomputing, user interface technology, and the Web.