|Q and A - Session 2
Butler Lampson, Jeannette Wing, and Siddharth Prakash
|Hints and Principles for Computer System Design
I have many hints that are often helpful in designing computer systems, and I also know a few principles. There are several ways to organize them: .Goals (What you want)-simple, timely, efficient, adaptable, dependable, yummy. .Methods (How to get it)-approximate, increment, iterate, indirect, divide and conquer. .Phases (When to apply them)-requirements, architecture, process, techniques.
Of course the goals are in conflict, and engineering is the art of making tradeoffs, for instance among features, speed, cost, dependability, and time to market. Some simpler oppositions are: .For adaptable, between evolving and fixed, monolithic and extensible, scalable and bounded. .For dependable, between deterministic and non-deterministic, reliable and flaky, consistent and eventual. .For incremental, between indirect and inline, dynamic and static, experiment and plan, discover and prove.
It also helps to choose the right coordinate system, just as center of mass coordinates make many dynamics problems easier. You can view the system state as a name?value map, or as an initial state and a sequence of operations that transform the state. You can view a function as code or as a table or as a sequence of partial functions. Notation, vocabulary, and syntax are other kinds of coordinates.
In the complex process of designing systems, both principles and hints can only be justified by examples of what has worked and what has not.
|Massively Empowered Classrooms (MEC)
Siddharth Prakash and Sriram Rajamani
My vision for the 21st Century: Computational thinking will be a fundamental skill used by everyone in the world. To reading, writing, and arithmetic, we should add computational thinking to every child's analytical ability. Computational thinking involves solving problems, designing systems, and understanding human behavior by drawing on the concepts that are fundamental to computer science. Thinking like a computer scientist means more than being able to program a computer. It requires the ability to abstract and thus to think at multiple levels of abstraction.
Computational thinking has already influenced many disciplines, from the sciences to the arts. In my talk, I will give a few examples from Microsoft Research of how computational thinking is changing the way research is conducted in different disciplines and helping to address societal issues. Computational thinking is also changing what we teach in colleges and universities today. I will speak about some recent educational efforts in the United States, the United Kingdom, China, and India on adopting computational thinking in education, especially at the K-12 level. Computational thinking can not only inspire future generations to enter the field of computer science-it can also benefit people in all fields.
|Q and A - Session 1
Jennifer Chayes, P. Anandan, Rico Malvar, Sriram Rajamani, Christopher Bishop, Victor Bahl, Raj Reddy, Ed Lazowska, and Chandu Thekkath
|Panel Discussion: How to do good research and have a successful career in Research
Jennifer Chayes, P. Anandan, Rico Malvar, Sriram Rajamani, Christopher Bishop, and Victor Bahl
|Tsunami or Sea Change? Responding to the Explosion of Student Interest in Computer Science
In the US, student demand for computer science is booming: demand for introductory courses; demand for the major; demand for upper-division and graduate courses by non-majors. Industry demand, too, is booming: it is predicted that 71% of all newly-created jobs in all STEM (Science, Technology, Engineering, and Mathematics) fields in the current decade will be in computing, and 57% of all available jobs, whether newly-created or available due to retirements. Our field has faced booming enrolments twice in the past: in the mid-1980s, and in the late 1990s. Universities were unable to respond adequately. The current boom shows signs of dramatically exceeding these previous ones. In this talk, I will present the data, and argue that the current boom in interest may be a long-term trend rather than part of a cycle. I will discuss possible approaches to accommodating the demand.
|Computational Limits to Human Thinking in a Society With Too Much Information And Too Little Time
This talk is about Computational Limits to Human Thinking. Human beings make errors, tend to forget, are impatient and look for least effort solutions. Such limitations, sometimes, lead to catastrophic results. At the same time, humans learn with experience, tolerate error and ambiguity, use vast amounts knowledge, and communicate using speech and language. Such features are still lacking in most of our systems. Most systems dont get better with experience. We cannot even send routine voice emails and video emails without using Skype or some such.
Most importantly, we are severely lacking in tools for coping with 21st century world of too much information and too little time. In this talk we will present two families of intelligent agents, viz., cognition amplifiers and guardian angels to help with problem of scarcity of attention. A Cognition Amplifier is a personal autonomic intelligent agent that anticipates what you want to do and helps you to do it with less effort. A Guardian Angel is a personal autonomic intelligent agent that discovers and warns you about unanticipated, possibly catastrophic, events that could impact your safety, security, and wellbeing. Both Cogs and Gats are enduring, autonomic, nonintrusive intelligent agents which are always-on, always working, and always-learning. It is anticipated that future Steve Jobs will emerge from those who are passionate about such human needs and understand human limitations.
|A Brief Introduction to Microsoft Research
|Tierless Programming and Reasoning for Software-Defined Networks
- Microsoft Research India
196/36 2nd Main
Sadashivnagar, Bangalore 560 080