Automated Software Engineering Research Group @NCSU

Saturday Oct 04, 2008

Research skills

Yesterday I gave a talk on research skills, whose slides are here. Feedback is welcome.

Friday Aug 03, 2007

Levels of research committments

Four levels of research commitments can be classified for students (see below). Each of you shall classify yourself to one of these levels. Each of you shall try you best to reach or keep in Level 1. Not many students are currently reaching or staying in Level 1.

 

There are positive iterations when you reach Level 1. When a student is efficient and effective in finishing research tasks, the advisor will work with the student on coming out new good ideas for the next research project. If the student stays on an existing old research project for a long time, before the advisor works with the student on a new good research project, the advisor will wait for the student to finish the old one up or wait for the student to tell the advisor that the existing old project has no hope and the student would give it up.

 

Some students fall into Level 4. It is a very dangerous situation. Staying on Level 4 can cause you to stay in the program for a long time without producing any research results.

 

Level 1. Self-propose timeline in research tasks and often succeed in accomplishing the research tasks

 

Level 2. Self-propose timeline in research tasks but often lag or fail in accomplishing the research tasks

 

Level 3. No self-proposed timeline in research tasks but be willing to discuss with the advisor in research timeline

 

Level 4. No self-proposed timeline in research tasks and even no responses upon the advisor?s requests on checking research status

Thursday Apr 26, 2007

How to meet your advisor?

In my view, the major purposes of individual (i.e., one-on-one) meetings include several parts:
(a). Keep the advisor informed on some research details (either the work being done the period before the meeting or the work to be done in the next time period) so that the advisor can give advice or guidance on them
(b). Brainstorm new research ideas and get feedback from the advisor
(c). Allow the advisor to know that you are making progress and going on the right direction/track.
(d). Any other things that the student wants to talk to the advisor (like general career advice, things that happened recently in the group, department, and the research field)

The first advice for students on meeting the advisor is "do sufficient preparation before your meeting with your advisor". I can tell that some students sometimes didn't prepare for their meeting with me. They came in my office and didn't have a meeting agenda in mind. After they used one or two sentences very briefly to inform me what they have done and they are going to do, they stopped and had no specific things to talk about during the rest of the meeting.

Students should list about things to be discussed in mind or in paper. In my early day's meeting with my advisor, I brought in printed hardcopy slides or some note printout. In the beginning of the meeting material, I put a list of items to be discussed if there are more than one item. I have thought carefully how to make full usage of the 30 mins (later 45 mins or 60 mins) that my advisor allocated for me. I usually spent some non-trivial time in preparing materials for my meeting with my advisor (this preparation could also help me to organize the work being done in the passing week and plan out what I am going to do in the next week).

There are two general types of students in terms of their style of meeting the advisor:
1. Have not much to say during the meeting with the advisor
2. Have too much to say during the meeting with the advisor

The first type is more common, I think. Many students often cannot use up the time slot allocated for them (either 1 hour, 30 mins, or 15 mins). They don't seem to have much to say with the advisor. I think a wise student should take full advantage of the allocated time slots.

For both types, the high-level quesiton that the students should ask themselves is: "What do you want from your advisor during this meeting?" Your advisor also had the same question "what do you want from me?". This question would be especially helpful for the second type of students. Usually the second type of students wants to expose to the advisor every tiny detail of the work that they have done or every tiny detail that they are going to do. If a student usually finds that he or she cannot finish the meeting within the time slot, there are two options: one is to request a longer time slot if the student finds that he or she has indeed important things to talk to the advisor, and the other is to rethink whether some of the stuffs that the student is telling are important for the advisor to give advice. That is, after the student explains the tiny details, would he or she expect the advisor to give specific useful advice? Or would the student expect certain advice on the tiny details? If not, than probably the student doesn't need to explain that levels of details to the advisor. One downside faced by the second type of students is that when a student overwelms the meeting with so many tiny details, the big picture is lost and the advisor may lose the opportunity and time to talk to the student on high level more important things.

The first type of students is way more common. They tend to keep many research details to themselve, not discussing these details with the advisor; this way may be acceptable or even preferable when the students are in a late stage that they can have quite high confidence of doing **right** things in **right** ways independently. Then they can focus on high level big pictures and other high level things during their meetings with their advisor. In my late stages of my Ph.D. program, I pretty much go for this way. But for students in early stages, they should discuss more research details with the advisor. One way to fix this issue of not much to say is to do more preparation before the meeting, as mentioned earlier! Before the meeting, think about what you want to disucss to use up the allocated time slot!

Another possible reason that some students have not much to say is that they are busy with their course work and other legitimate things, not being able to spend much time on developing the reseach project or making enough progress; this situation occurs very often when students are in their early stage, taking non-trivial course load. The advisor would often show understanding on the situation. But that doesn't mean that students would skip the meeting or have not much to say in the meeting. In my early stages of Ph.D. program, I didn't or couldn't spend a lot of time in developing research projects, partly because of taking courses and partly because of lack of good research ideas to work on (I struggled on coming up good reseach ideas for quite a while in my early stage of my Ph.D. program). But I still kept routine meetings with my advisor, talking about ideas that I have, talking about my understanding of some papers, talking about other things ... Of course, I needed to spend time on preparing for such meetings especially when the meeting didn't focus on speciifc research details that I developed.

In my Ph.D. program, when I had a meeting with my advisor, I wouldn't leave till I used up all the time allocated to my meeting. When I finished technical parts, if some time still remains, I would talk to my advisor on non-technical, causual stuffs like research community, high level career advice, the advisor's view on certain things, ...

In summary, I hope students can use up and take full advantage of their meeting time slots with the advisor.

Tuesday Apr 24, 2007

Answers to "The Global Educator" Magzine Interview Questions

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. How did you discover your interest in Software Engineering?

 

I learned programming in my high school years and found software construction fascinating. In my undergraduate senior year, I participated in software project development in research labs within the university and in companies outside the university. When I got more involved in real-world software development, experiencing real difficulties faced by software practitioners, I became more interested in techniques and tools for addressing these real difficulties in software development. When I had a choice in choosing my research area when pursing my M.S. research at Peking University, I chose to focus on software engineering research. Since then, I have developed strong interest in automated software engineering, with a focus on automated software testing and mining software engineering as well as their applications in practice.

 

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

 

I am currently an Assistant Professor in the Department of Computer Science of the College of Engineering at North Carolina State University since August 2005, after I received my Ph.D. in Computer Science from the University of Washington, advised by David Notkin. Before that, I received an M.S. in Computer Science from the University of Washington in 2002, an M.S. in Computer Science from Peking University in 2000, advised by Hong Mei, and a B.S. in Computer Science from Fudan University in 1997. I lead the Automated Software Engineering Research Group at North Carolina State University. In my career, I have been very fortunate to have great mentors to help me and to have great students to work with.

 

3. Has teaching always been a career aspiration or did teaching and research interest you over time?

 

Teaching has always been a career aspiration to me. Teaching students and seeing them grow are always very enjoyable. Teaching students is also a learning process for myself because often the time I learn new research ideas or thinking from students through interactions with them.

 

4. What are the important skills a person needs to be an academician?

 

There are many important skills for being a good academician: a good researcher, a good educator, a good collaborator, and a good citizen in the research community. Some important skills include being able to teach and advise students, being able to generate many good research ideas, being able to assess and judge research work, being able to manage and coordinate a team of students and collaborators to carry out research tasks, etc.

 

5. Do you think faculty members should maintain a good balance of teaching and research?

 

Both teaching and research are important in a faculty member?s career. Successful teaching can attract good students to the research area, and excite and inspire them to learn more about doing research. On the other hand, successful research can be incorporated in teaching so that students can learn state-of-the-art research in the field and prepare them with important skills for conducting research or solving real-world problems.

 

6. For a dynamic field like software engineering where in each day brings in new changes in terms of technologies, how do students keep themselves updated since curriculum cannot be changed so fast?

 

Although new changes in technologies occur frequently, many of these new technologies share the same underlying foundation as previous technologies. So students need to have a deep understanding and grasp of the underlying foundation and then they can easily absorb and adopt the emerging technologies. Furthermore, students shall have the capability of self-learning, self-training, or self-educating in order to keep up with new changes in technologies.

 

 

7. For PhD aspirants, how do they decide on their research topics? Could you advise them on the preparation they need to do before entering into a doctorate program and how do they work over the years?

 

Ph.D. students can decide research topics based on their research interests, their research background and expertise, and the significance and impact of research topics. In other words, students shall work on what interest them most, on what they can do well, and on what matter to software engineering research and practice. In addition, students shall also make sure that the evaluation of research results in research topics can be feasibly conducted (given available resources); otherwise, the students may not be able to convince either researchers or practitioners with their research results. Before students enter into a doctorate program on software engineering, students need to prepare themselves to have strong basic software engineering skills, including design, programming, testing, debugging, maintenance, etc., as well as general problem solving skills. Many research sub-areas in software engineering require building software tools and conducting experiments so the basic software engineering skills would be critical. Over the years in their doctorate programs, students need to learn how to carry out good research and how to write good research papers, and eventually learn how to be independent in research (independently coming up new research ideas and developing them).

 

8. Are all research projects in software engineering usually a collaboration between academic community and the industry?

 

Some but not all academic research projects in software engineering involve collaborations with the industry. In these collaborations, the industry can help provide sources of research problems, resources of research infrastructures, platforms of research-result evaluation, transfer of technologies, and supports of funding. Many academic research projects have produced impact on the industry. ACM Special Interest Group on Software Engineering (SIGSOFT) has initiated the Impact project (http://www.sigsoft.org/impact/) to determine the impact of software engineering research upon software engineering practice.

 

9. Could you talk about the career opportunities open to software engineers?

 

There are many career opportunities open to software engineers. Like in other areas of computer science, a Ph.D. graduate can seek career opportunities in academia (either research or teaching institutes) or industry (either research labs or companies). An M.S. or B.S. graduate can seek many career opportunities in companies. There are various job types of software engineers, including software testers, software developers, software architects, etc. On April 24, 2006, CNNMoney.com (http://money.cnn.com/magazines/moneymag/moneymag_archive/2006/05/01/8375749/index.htm) reported that software engineers have the best jobs in the US. It said ?software engineers are needed in virtually every part of the economy, making this one of the fastest-growing job titles in the U.S.?

 

 

10. Could you name some of the top employers of software engineers in the US?

 

Some of the top employers of software engineers in the US include Microsoft, IBM, Google, Yahoo, Cisco Systems, Oracle, etc. Many more companies than I can name here employ a large number of software engineers.

Monday Apr 23, 2007

Become the owner/driver of your research projects

Students have different levels of ownership of their research projects. Sometimes some students feel that they are doing the work primiarly "for their advisor" not primiarly "for themselves". They feel that they need to catch a submission deadline simply because their advisor wants them to make the deadline. I have been trying to pay attention to this issue lately.

In last week's group meeting, I went around the table to ask students to speak out what conference deadlines they want to catch for submitting papers on their research projects rather than being told by me on what deadlines they shall make. It may be just a phycological effect because either the students or I would choose the same deadline to catch but if it is spoken out by the students, I hope the students have more ownership and more incentive in catching up the deadlines.

Students shall take ownership and driving force of their research projects rather than the advisors. We shall explore how to move towards this direction.


Thursday Apr 19, 2007

Research skills required to conduct research (on automated software engineering)

In the past, I told my students that three levels of research performance/skills could be assessed (an analogy with CMMI levels?:):
 
*. Level 1: Independently carry out/implement research ideas (including implementing tools and doing experiments) given by the advisor or other more senior people
 
*. Level 2: Independently write research papers
 
*. Level 3: Independently generate (good) research ideas; sometimes, coming up new research ideas can be categorized as (1) coming up with a new research problem or (2) coming up with a new research solution to an existing research problem; the former is often more challenging
 
"High effectiveness" and "high effciency" are two cross-cutting quality attributes for these three levels.
 
When a student starts working in our research group, I would expect the student has reached Level 1, which means the student shall have strong programming and debugging skills. My major role is try to train/help a student to reach Levels 2 and 3. Level 2 is not so difficult based on my advising experience (but I admit that teaching students on how to write well and putting so many red marks on their writing and going through these red marks with the students are a very time-consuming and yet rewarding process). Unlike many other professors, I ask students to write the whole paper draft even for their first paper because I believe that if students don't get a chance to write much and make mistakes (later corrected by me), they can never learn how to write well independently. I will talk more about improving technical writing in some future entries.
 
Reading other people's papers, playing around existing tools, and getting hands-on experiences are important factors for helping to come up with good new ideas. But that is not enough. On another future entry, I will discuss the issue of educating students to think and come up new ideas. This task is a very challenging one and I am still struggling on finding effective solutions.


Archives
Links