To young researchers: "Believe in your Talents":
"We are not supposed to hide our talents. Imagine being in a dark room, a candle would make a nice light there, and that is the effect of making visible our talents to the world".
A few things I apply to my life, I think they will evolve and change, but hopefully, there will be useful to you (referring to young researchers):
1) We have got to have a vision for our personal and professional development (e.g., to get there, try to know your target audience and reach the people you like or want to work with). Without a vision, we risk to be drifted around and end up nowhere. 2) Ignore the “naysayers”: There will be always people telling us that we are not good, that what we are trying to do is impossible”. Without constructive feedback, we should ignore them, they do not know who we are and what we can achieve. We got to believe that our vision “is possible” 3) Embrace Failures: Do not be worried about failures, all people fail, embrace failures. Fail and get up, fail and get up. Keep looking and visualize your vision. 4) There is no plan B: Hearing “naysayers” or be worried about failures makes us sort of “frozen”, we can’t do things properly if we are frozen by our concerns. Then, we often try to think about an alternative plan, I call it “plan B”, which is usually far from our original vision. This is ok if our vision was just far away from what we really want to be or what we really are. However, when we think about a plan B we tend to move all our positive energy from our vision, I call it plan A. We do it because we consider the plan B as “a safety net”: if things get bad, there will be an alternative plan (a safety net). We actually work/achieve more if we act like we do not have a safety net (we are not afraid). 5) Happiness is not a function of what you achieve: “It's a function of how you spend your time. Success is a temporary thrill. Happiness lies in doing daily activities that bring you joy. There's always a new mountain to climb. You don't have to anchor your emotions to the summit” (Adam Grant)
There are theses available (for both bachelor and master degree) on topics related to his research interests. It is suggested to contact him directly (by e-mail), or, if you want, to have a look at his recent publications on the various topics. In particular, there are available theses on the following topics:
1) Mobile and Automated Testing
2) Machine Learning Applied to Software Engineering
3) Continuos Delivery and Continuos Integration
- Development and Testing of Self-driving Cars Software
- Development and Testing of Drones Software
- Monitoring and Testing of Robotics Systems
- DevOps tools for Cyber-physical Systems (CPS) Development
- Security for Cyber-physical Systems
4) Maintenance, development and testing of Cloud Application
- Continuous Integration (CI) consists in a specific stage of CD process where team members integrate their work in an automatic manner, which allows a fast building, testing, and releasing of software, leading to multiple integrations per day. A thesis in this topic will have as main focus the development of recommender systems able to provide suggestions to developers and testers during Continuous Integration activities.
5) Tools for maintenance, development, and testing of
- Monolithic and Cloud Applications
- Cyber-physical systems (drones, robots and self-driving cars)
6) Automated Code Review
6) Automated Code Review
7) Cloud-based Testing
8) Mining software repositories (analysis of software artifacts to support development)
- Issue management (possibly in the context of Cyber-physical systems) of Github issues
- Define a Feedback Mechanisms able to help developers digest the huge amount of feedback they receive from users on a daily basis, transforming user reviews into maintenance tasks (fixing issues or building features). For more information read the recent papers accepted "How Can I Improve My App? Classifying User Reviews for Software Maintenance and Evolution", publications.html, "Analyzing Reviews and Code of Mobile Apps for better Release Planning", "Recommending and Localizing Change Requests for Mobile Apps based on User Reviews" and the related tools called ARdoc and SURF.
- Develop recommender systems able to (better) support developers during the code review process. For more information read the recent paper accepted "Would Static Analysis Tools Help Developers with Code Reviews?".
- Development recommender systems based on Source Code Summarization and Code Change Summarization techniques able to support developers during development or maintenance activities. For more information read the recent paper accepted at ICSE 2016 entitled "The impact of test case summaries on bug fixing performance: An empirical investigation". The slides of my lecture of the course Software Maintenance and Evolution describe the concepts of Source Code Summarization and Code Change Summarization.
- Develop search-based approaches to better predict change and defect prone classes. For more information read the recent paper accepted at GECCO 2016 entitled "A Search-based Training Algorithm for Cost-aware Defect Prediction".
- Automatic redocumentation of existing systems by mining software repositories. For more information have a look at the papers accepted "Mining source code descriptions from developer communications" and "CODES: mining sourCe cOde Descriptions from developErs diScussions".
- Automatic identification of skills and teamwork in software projects by mining software repositories For more information have a look at the paper accepted "Supporting Newcomers in Software Development Projects and the list of recent publications.
- Development of recommender systems, i.e., of systems able to provide suggestions to developers and managers during development or maintenance activities. For more information have a look at the paper accepted "Development Emails Content Analyzer: Intention Mining in Developer Discussions", "Analyzing APIs Documentation and Code to Detect Directive Defects" and the related tool called DECA.