It is perfectly fine for you to contact the professors that you would like to work with in the future. Choosing your advisor is a big decision for you, and it is important that you know about the professor's research interests, personality, and work style before you join his/her lab. For that, you need to know yourself first.
Some of my students and I have been researching on embedded systems and cloud computing systems. To understand embedded systems, we study embedded applications, embedded OS, and embedded architectures to get the complete picture on how the systems perform. In this area, our major targets now are Android systems, performance tools, and virtual platform. For cloud computing systems, we study parallel and distributed computing, including parallel computer architecture, optimization of parallel applications, and performance analysis of cloud-based applications.
Android is one of the hot topics in computers. We are not just writing Android applications -- many students who know Java programming can learn how to do that by themselves in weeks. We want to know the internals of Android and how to make it better for important applications. Android smartphones and tablets are already popular in the market, and we think that is just the beginning. Just like PCs in the past, Android systems will be everywhere to perform all sorts of applications in the future. The question for us and many companies in Taiwan is: How to design a competitive Android system? Before we can answer that question, we need to understand Android first.
Android is based on Linux, and I have been teaching a Linux kernel course since 2006. There are many interesting works in Linux, and I think students can learn a lot from hacking the kernel and trying to improve a Linux system. I have also worked on state-of-the-art supercomputers and enterprise systems in the past, and from the experiences I know the required knowledge and skills to hack complex computer systems and the methodologies to analyze their performance systematically. Performance tools and virtual platforms are important techniques for us to understand what happens in a system. We try to improve existing performance tools and design new tools on virtual platforms, so that even a beginner can also benefit from these tools.
Cloud computing is another hot topic of Today, even those who don't really know computer systems can talk about cloud computing in public. We don't think that cloud computing is re-inventing the wheels because what really matters is the infrastructure technologies that are used to make cloud computing more and more power and efficient. I don't work on cloud computing simply because it is hot, although many people do. I do research on it because I work on parallel processing and a variety of computer systems in the last 18 years. Some people think that cloud computing is simply moving existing applications or services from a company's server room to a service provider in the cloud -- that is merely a user's view of cloud computing. Knowing how to do that is not far from knowing how to install an operating system on a PC, which is really not a big deal. Instead of being a user, we want to understand how to build better cloud computing systems and improve cloud computing applications. At this moment, we see many interesting, open research topics in this area, including security and privacy issues, application migration, cloned execution, virtualized execution environment, performance monitoring, etc.
As you can see, the topics mentioned above are quite practical, but they are very challenging. Personally, I would like to make contributions by solving real problems, and I hate to waste my time on useless research. Since we choose to work on hot topics and complex systems, it is mandatory that my students and I have a lot of old things and new things to learn everyday, and it may be hard for some new students. As for myself, I love learning -- learning to become smart in doing things. I hope my students share the same view as I do and have fun learning things in our lab. Thus, I don't like to micro-manage my students, but I want my students to manage their projects and learn how to become smart when they work on computer systems. That's what I really wanted to teach when I decided to join the university, and that's how we will all become smarter in the future.
Please let me know if you have any questions and if you would like to talk to me in person.