- Green Bay Packers                                    - Wisconsin Badgers                                    - PGA Tour                                    - US Golf Association                                    - Golf Instruction                                    - ESPN
am a Researcher in the Center for Software Excellence at Microsoft Corporation, where I lead and manage the Program Analysis research group. I am also an affiliate assistant professor in the Computer Sciences and Engineering department of the University of Washington. In the Spring quarter of 2001, I taught a graduate class on Program Analysis at the UW.

 


My interests lie in the application of programming languages techniques to improve reliability of software. More specifically, I am interested in static program analysis, and its application to compilers, error detection tools and program verification systems. Static program analysis is any method for automatically over-approximating runtime behavior of a program. Examples of program analysis methods are type inference, dataflow analysis, model checking, and theorem proving.

I believe that as more and more aspects of our lives are controlled by software, correctness will become a major concern for all producers of software. This is especially true for providers of platform software. Correctness is a domain of opportunity for static analysis; every other method for enforcing correctness is either incomplete (testing, partial simulation, runtime error detection) or involves high programmer overhead (new languages and type systems). Unfortunately, precise static analysis of large software has, to this point, proven intractable.


I invite you to read more about my previous work on pointer analysis, and my current project related to error detection. I would also recommend viewing the web pages of the Program Analysis research group, and of Microsoft Research. If you need any further information, please feel free to contact me.

Thanks,

My research is guided by two basic insights: First, if an analysis problem if broken up into its constituent components, it is possible to produce a scalable analysis solution by choosing the right mix of expensive and cheap analyses targeted at the appropriate subproblems. Second, practical scalable analysis must run on real code written by real programmers, not imaginary code written on whiteboards by researchers. In other words, the space of programs written in practice is much smaller than the space of programs. This insight leads to a simple approach to designing scalable program analyses: Given a problem, identify a cheap algorithm that produces inaccurate results, and an expensive algorithm that produces accurate results. Based on examination of coding practices, design an algorithm in between the two extremes that trades a little accuracy for a lot of scalability, by retaining accuracy on the common cases found in real code. My previous work on scalable alias analysis algorithms exemplifies this approach.

More recently, I have applied the same approach to the problem of verifying the correctness of software wrt partial specifications of correct behavior. I lead the ESP project at MSR. I started this project in May 2001, on the premise that a mixture of cheap global static analysis and expensive local state space exploration can be used to accurately identify errors in large programs.



Copyright 2005, Manuvir Das, Microsoft Corp. Site assistance by ATD