Automated Software Engineering Research Group @NCSU

Friday Apr 27, 2007

Answers to Global Educator Magazine, Student Section

The Global Educator magzine addresses students of science and engineering. The focus of the magazine is to provide information to students about educational institutions (specifically focusing on engineering and technology) in India and overseas, inform them about developing opportunities in engineering, offer practical tips on how to manage education abroad, carry interviews and profiles of achievers in the field of science, technology, engineering and business as role models.

Below are the answers to the interview questions posed by the Global Educator to me. They will be published in a future issue of the magzine.

1. Could you tell us about your career so far?

I am currently a PhD candidate in the Department of Computer Science at North Carolina State University, Raleigh, North Carolina. I completed my Master of Science degree from the same university in 2003, and Bachelor of Engineering degree from National Institute of Technology - Karnataka (previously KREC), Surathkal, India, in 2001, all in Computer Science. During my graduate studies, I have interned at NEC Europe Network Laboratories, Heidelberg, Germany and IBM T J Watson Research Center, New York. In 2007 summer, I will intern at Microsoft Center for Software Excellence, Seattle.  

2. How did Software Engineering interest you?

I like exploring research ideas that have immediate practical applications; innovations that create impact and are adopted by a very large community. Specifically, my interests in Software Engineering lie in the area of Automated Software Testing and Verification. It is indeed a very satisfying experience to come up with research methodologies that ultimately improve the developer productivity in the software industry. I was introduced to this fascinating world of Software Engineering through the Automated Software Engineering research group (http://ase.csc.ncsu.edu/) led by my advisor Dr. Tao Xie, of which I am currently a part of.

3. What is your doctoral research concentrating on?

In simple words, my doctoral research focuses on developing efficient techniques to automatically find bugs in software programs. Bugs can have serious implications ? illegal access to a personal computer, failure of a life-saving medical device managed by software, complete network shut down of a large organization, to name a few. Bugs are mainly caused when programmers fail to adhere to certain application-specific, non-syntactic rules in the code that they write. These rules, when documented and available, can be checked against a given program using sophisticated software verification tools such as model-checkers. So far, my doctoral thesis focuses on addressing two problems. (a) Writing rules formally for software verification is hard and error-prone (b) Application-specific rules may not be documented, hence being unavailable. I have proposed and implemented a framework that makes specifying rules for software verification easy. Furthermore, I apply data mining techniques to automatically extract such rules directly from program source code or program execution runs. These rules can then be used to find bugs.

 4. Through your doctoral thesis what would you contribute to the software engineering field?

 The research methodologies that I develop will aid developers in the software industry to adopt sophisticated software verification techniques in their coding cycle effectively, with minimum efforts. Software verification techniques such as model checking can assure total absence of certain classes of bugs. However, developers need to specify property rules formally in order to apply verification tools. Most developers find this specification task a hindrance to their coding efforts as specifying rules formally requires knowledge of the rules themselves (which might not be documented and available) and the formal rule language. Furthermore, specifying rules also requires the knowledge of the internal details of the components used in the software and their source code details. The techniques that I develop in my thesis partly automate the process of finding rules and specifying them for the verification tools. This research result ultimately leads to higher confidence in the software being developed and better quality assurance standards.

5. How has your experience been studying and conducting research in US university?

 Excellent! North Carolina State University has an excellent Computer Science program for students. Students are allowed to choose from a wide variety of courses preparing them to address research problems in different areas of Computer Science. There is an open environment for collaboration within the department and students are given great freedom and guidance to choose research problems that interest them. The curriculum also encourages students to get practical experience outside academia. To my research field, this is an integral component, as we get exposed to real problems that software developers face. The Automated Software Engineering research group, of which I am a part of, has ties with researchers from other universities and industrial research labs around the world. I have been very fortunate to work in few of the leading research labs in my doctoral career so far.

 6. Could you share your experience in technical conferences and during paper presentations?

 Our research group actively publishes in leading Software Engineering conferences. I have been fortunate to attend and participate in a few of them and it is a very rewarding experience. A student needs to have very good communication and presentation skills to get the best out of such conferences. It is about effectively and clearly presenting months or years worth of research work in less than half an hour and getting the audience interested. Leading experts in the field attend these conferences and it is very useful to get constructive feedback from them. Discussion with other conference attendees aid students in identifying problems in their research and also defining newer research problems to solve. This conference interaction leads to collaborations among researchers with similar interests. One also gets to learn about the most current research problems in the field by attending other presentations and key note talks. Conferences are also a great venue to meet with your prospective employers and discuss mutual interests. In summary, meet and talk to as many people you can in such conferences to ?sell? your research and also know about the latest in the field.

7. What innate skills do you feel essential for a PhD aspirant?

 In short, systematic problem solving skills are the most important requirement for a PhD aspirant. There are various components in productive problem solving. The first component is gathering the background knowledge required to conduct research. A PhD student has to know what has been done so far in his field and the emerging trends. A student gathers this knowledge by taking relevant courses and conducting extensive literature survey. A student should be very good at extracting relevant information for the research from the vast body of existing work quickly and effectively. The second component is identifying an interesting problem worthy of solving. This is a major component and takes time. Having a good advisor greatly helps here. The third component is excellent writing and communication skills. These skills are required to effectively publish the research findings and to get constructive feedback from advisors, mentors, and leading experts. In my field it also helps to possess good software development skills, the fourth component. We propose research solutions, implement them as tools, and test their effectiveness on real software subjects. Finally, a student needs to be self-motivated, passionate about the research problem, and dedicated to perform productive research. Some valuable advice on conducting research given by my advisor can be found at:

http://www.csc.ncsu.edu/faculty/xie/advice/

 8. What are your future aspirations?

 My immediate plan after graduation is to work as a software engineering researcher for an industrial research lab with strong publication culture. In my area, research problems are usually motivated by industry needs. After a few years of experience in the industry, I would like to apply for a tenure-track faculty position in reputed universities. As an academician, one has greater freedom in choosing the research problems and collaborations. My prior exposure to the software industry should enable me to address practical problems, the solutions of which would fundamentally advance the field of Software Engineering.

 9. Any comments on the software industry in India?

 The prospects for software industry in India are very bright. Leading software companies such as Microsoft and IBM have set up research labs in India recently. These research labs have strong collaborations with universities all over India. Most software development giants such as Infosys have research wings in house. These collaborations and industrial investment for research tie up practice and research promoting fundamental advances in the field of Software Engineering.  With its man-power and skill, India is soon going to be a software super power, contributing fundamentally to the field of Software Engineering and Computer Science in general. To this end, I personally feel that the government should increase funding grants and support for major universities such as Indian Institute of Technologies (IIT), apart from spawning newer universities for higher education. Graduate-level education in India for engineering and physical sciences is still not up to the mark and a substantial investment here would help transforming India to a knowledge super-power.


Comments:

Good communications kills is really important in conferences for it to be effective. Even in presentations, one must have good communications skills to be able to deliver the message he wants or must deliver to his audience or the people he is presenting to.

In presenting your research work, even in writing, you must have good communication skills as well. It will help you to organize your work in a way that those who would read it would understand fully your work.

Posted by Communication Skills on September 06, 2007 at 11:55 AM EDT #

Post a Comment:
  • HTML Syntax: Allowed

Archives
Links