There were opening remarks by a number of people, but the five main speeches plus one panel discussion were as follows:
- Wendy Hall, ACM President
- Rick Rashid, Sr. VP for Research at Microsoft
- Barbara Liskov of MIT, the most recent Turing Award Winner
- Raj Reddy of CMU, another Turing Award Winner
- Tony Hoare, currently working at Microsoft Research in Cambridge, UK, another Turing Award winner
- A panel discussion on research in India
In the evening, there was a related event, a meeting of ACM-W, ACM Women in Computing. See a related blog post on that.
For a short overview of the talks:
Dame Wendy Hall, ACM President
Wendy highlighted the presence of 3 present and former ACM presidents, and 3 Turing award winners, including the most recent winner, Barbara Liskov. She spoke of the intention to increase ACM participation in India, and that this event is meant to help spur on such efforts.
Rick Rashid, Sr. VP for Research, Microsoft
This talk was really mostly about Microsoft's investment in research, and part of the emphasis was on the fact that in pure research, the benefits are not always apparent until later. He emphasized the importance of research in the company's agility.
MS has started a PhD intern program for Indian PhD students at Redmond Research.
Rick says that MS measures the research success in the numbers of publications in peer reviewed journals, and says that MSR contributes about 25% of patents for company.
A highlight of the talk was a video on Project Natal: http://en.wikipedia.org/wiki/Project_Natal
This is a system that allows the full body motion to control a computer environment; he highlighted the use of machine learning and vision techniques. He said that about 50% of the effort was at the software level; for example, in skeletal tracking plus software to interpret body angles.
Barbara Liskov used her talk to walk us through the various steps she went through in doing the research for which she was cited in the Turing Award, which came as a surprise to her. She was cited for her contributions to concepts such as data abstraction, CLU, and type hierarchies. She went through her various projects, spoke of what experiences led to what sorts of skills and insights, talked about other papers that influenced her, and the people she worked with. Near the end she mentioned that her husband was scanning the internet when she won the award and found a comment along the lines of, "How could she win an award for that? We all know that!" This must have been rather fulfilling for her, to have articulated concepts that now are considered totally fundamental to Computer Science.
Barbara earned her PhD in AI with McCarthy at Stanford. However, she quickly realized that AI was not her interest; she completed the PhD, however, as she felt that the whole point was to have the PhD so she could study what she wanted to.
She took a job at Mitre, where she worked on Risc architectures and developed the Venus machine. One unusual feature at the time was the addition of semaphores to the machine. The Venus OS could support up to 16 users; a lot of the work was machine programming.
At the time there was concern about the software crisis: programming methodology and how to organize programs so that they do what they are supposed to. Interestingly, we still have that problem.
She addressed how to organize and structure programs. She referred to many papers that influenced her, but some were Dijkstra's March 1968 CACM paper on "Go to statement considered harmful", which said that program semantics and structure should be similar. At the time there were few control structures in languages, so people used goto.
N. Wirth's 1971 CACM paper on "Program development by stepwise refinement", in which he described top down vs. bottom up development, working with the 8 queens problem.
Parnas' 1971 IFIP paper on "Information distribution aspects of design methodology", on program structure.
At some point, she realized that she also had been using a design methodology called partitions:
Many programs used many global variables. Venus interacted with modules for global state via ops.
Barbara moved to MIT in 1972; she spoke of the various interactions that led to her proposing, with Steve Zilles, abstract data types with polymorphism, static type checking, and exception handling in SIGPlan 1974. Abstract data types have state and operations, and this made some of the more theoretical concepts under discussion at the time more accessible to programmers. Many discussions centered about the loss of power in high level languages, and about performance considerations. She also spoke of the realization that readability was a real consideration, more important even that writeability.
In the fall of 1973, she started to create the programming language CLU with 3 graduate students. She chose to create a programming language because programmers think in terms of programming languages, and there would be a good chance of use. They wrote the CLU compiler in itself, so they had a sanity check on its feasibility. She also says that because a compiler requires a precise definition, a programming language is a mathematical object.
In language design (and she calls every interface design a mini-language design), she calls out the trade off in expressive power, simplicity, performance, ease of use, uniformity, and scalability. They had some restrictions: no concurrency, no goto, no inheritance. She made some assumptions and decisions from her Lisp experience: a heap with a garbage collector, no block structures, separate compilation so that one could compile without a full definition and not require allocation of objects on the stack; but she introduced static type checking, as she found that useful.
She gave some examples of implementation decisions in areas like polymorphism, exception handling, and iterators. Her principles are based on accurate interfaces and avoiding useless code. She spent a lot of time thinking about how to handle parameterized checks so that compile-time checks would be possible, and decided to allow to specify what ops are required. They had a type definition instead of an object instantiation. For exception handling, they decided to support signalling, return, specifying where to go. She feels that CLU is still better than Java or C# in exception handling; Java requires you to write a handler, and C# throws up the stack.
She later found that another of her ideas had been labeled the "Liskov Substitution Principle": A subtype should behave like its supertype when accessed by supertype methods.
Challenges interesting to Barbara are in new abstractions, though not much is happening. She thinks that MPP will be important.
For an Internet computer: she says that the semantics are not yet defined.
Raj works at CMU, and is interested in education in rural areas. His talk was a projection of what could be, and a call to tackle some of the problems he posed. This talk is outlined very sketchily here, but it generated a lot of interest especially from students.
He said that people good at many things computers are not, but people make a lot of errors.
- Catastrophic loss of data: didn't mean to do that
- Unanticipated side effects: how did that happen
- Massive undo
- Anytime, anywhere abort, like control c
- Recognize what happened and respond
- Could provide intelligent help, such as "What is" in search engines
Problem: People impatient. Would like to have:
- Learn from experience
- Update in background
- Look ahead retrieval and computation, those that take time, give illusion of infinite power
- Just in time learning
- Gentle slope systems; easy things should be easy to do
- Agents know about pgp,ftp, or whatever
Some of what he would like to see in the future:
- Agent based architecture; no one working on this perhaps
- Silky interface: speech, image, language, knowledge
- Forgiving interfaces, tolerating error and ambiguity
- Self improving - knowledge acquisition
- Intelligent help
- Overcome human limitations
- Eliminate language divide and literacy divide
Tony went back to Rick's comment that basic research is useful.
In 1968 predicted he could retire before his work was in use. He retired, took a job at MSR, found no one used his ideas in practice, except assertions.
He wanted to get people to use more verification. Thought a big problem would cause this, but found that people would actually find that the error was due to lack of testing, so they would do more testing. Which was frustrating to him.
But a big problem came in, a virus, code red. There he found use for his work during the reaction to security hole.
Therefore basic research should be done as usefulness can happen.
Tony is very interested in the "Verified software initiative": They would like to produce examples of verified software, typical of code people use, but has a formal specification, with verification and proof. He asked for participation in this project.
- Proofs must be checked by computer
- Results must be published
- Will need very good mathematical tools
- Development of these tools part of the project
Panel Discussion: C S Research in India
The panelists were:
- P Venkat Rangan, VC Amrita University and an ACM Fellow
- Vijay Bhatkar, of ETH and an ACM Fellow
- Rajeev Rastogi, of Yahoo
- Subu Goparaju, of Infosys SETLabs
The closing remarks were made by PJ Narayanan, co-Chair of the ACM India Council and one of the founders of the ACM Hyderabad chapter.