Can you give us a little background about yourself?
I grew up in Culver City in Southern California after immigrating to the United States from Hong Kong at the age of 3 years old. After attending high school in Southern California, I attended Stanford University to pursue my Bachelor’s degree, and then I moved to Boston on the East Coast to pursue my Master’s and Doctorate degrees at M.I.T. I’ve had various internships in industry, but have spent most of my career in academia. I have a wonderful spouse and two kids. My daughter is 8 years old and my son is 5 years old.
How did you become interested in Electrical Engineering?
I had two significant influences early on in my life that pushed me towards Electrical Engineering and Computer Science. While I was growing up in Southern California, an uncle of mine pursued his Ph.D. in Computer Science at U.C.L.A., and lived with my family during his graduate studies. My uncle loved tinkering with computer hardware, and taught me a lot about Electrical Engineering. Because of this experience, I developed an interest in computers even before going to high school.
Another influential experience I had occurred during the summer after my junior year. At that time, I attended a college preparatory program, called the Summer Science Program (SSP). SSP was an extremely intense and amazing academic experience. Although the focus of SSP was not on Electrical Engineering (the main project was to experimentally determine the orbit of an asteroid, requiring students to do astrophotography, use precise measuring engines, and perform celestial mechanics calculations), it introduced me to science, and gave me a feel for what doing scientific research is like.
Can you tell us about your work as an Associate Professor in the Electrical and Computer Engineering Department at the University of Maryland at College Park, and Co-director the University of Maryland's Systems and Computer Architecture Laboratory? Could you describe a typical work day?
As a professor, my most fundamental responsibility is being an educator. I teach one class per semester, usually either programming, basic computer organization, or advanced computer architecture. Besides teaching in the classroom, I also serve as the Director of Computer Engineering Education. This means I am responsible for our undergraduate program in Computer Engineering. As such, I spend a lot of time thinking about our curriculum, especially how it can be improved and / or modernized. I have also helped create several new programs, including a specialization in cyber security (a very popular area these days) and a minor in Computer Engineering. I also participate in recruiting students, and help advise them once they are in our program.
In addition to teaching, another major responsibility of my position is to do research. I spend quite a bit of time thinking about research directions and coming up with new research ideas, as well as talking to colleagues about my research ideas. Then, I write grant proposals to acquire funding to explore my ideas, often in collaboration with my colleagues. While I really enjoy doing the research itself--i.e., building research infrastructure, carrying out experiments, and acquiring results--ironically, I don’t get much of an opportunity to do that in my job. Instead, I recruit graduate students and train them to do the research. In other words, I’m more of a manager and educator, even on the research side of things. When an idea starts to mature, then I spend a lot of time disseminating the results by writing papers and publishing them, as well as giving presentations at conferences and other research venues. (And again, much of the dissemination effort is carried out by my graduate students). At the end of it all, I get to see my students graduate and start their own careers, which is a pretty special honor.
The last responsibility of my position is service, both to my University and to my profession. At Maryland, I have served on many committees whose job it is to run the day-to-day activities of the University. For my profession, I have mainly served on program committees that review research papers for publication in various conferences and journals. I am currently an associate editor for the ACM Transactions on Architecture and Compiler Optimization, which means I’m responsible for finding reviewers for papers submitted to that journal, and making acceptance / rejection decisions once the reviews have come back.
What is your main research interest? Can you tell us about it?
I do research in the area of Computer Architecture, which means I try to improve computer hardware by changing its organization and how it carries out computations (as opposed to changing the low-level circuits or devices that implement that hardware). The main improvement that I seek is higher performance, but I also try to improve the hardware’s power consumption, reliability, and programmability.
Recently, I have been working on two specific research problems. The first is trying to better understand the behavior of modern architectures. Today, computers are highly parallel, which can make their behavior quite complex. This is particularly true in the memory hierarchy—i.e., in a processor’s caches and DRAM memory. About 40 years ago, a very powerful technique for understanding memory behavior in sequential machines was developed, called reuse distance (RD) analysis. RD analysis can predict how memory performance will change as the designer scales the capacity of the memory hierarchy, providing deep insights into a sequential program’s memory behavior. My research group has extended RD analysis so that it can be used to analyze parallel programs. In addition to capacity scaling for a single thread (or program), our techniques also allow designers to understand how memory behavior is affected as core count (or the number of parallel threads) is scaled, as well as scaling of the program’s input problem size. The greater insights provided by our techniques can enable designers to build better memory systems for parallel machines.
Another research problem I’m working on is approximate computing. Many programs compute approximate or inexact results for which a “good enough” answer is sufficient. Programs for multimedia and signal processing, data mining, and machine learning (as well as programs in most areas of artificial intelligence in general) exhibit this property. Such approximate computations open up the possibility to trade off solution quality for improvements in performance, power consumption, and/or reliability. My research group is investigating architecture-level techniques for exploiting approximate computations, such as relaxing correctness during processing (i.e., building processors that occasionally produce erroneous results) in exchange for higher performance or lower power. We are also developing techniques to bound worst-case error and to manage error propagation when approximation techniques are being applied.
What jobs and experiences have led you to your present position?
Mainly, I have developed a passion for doing research and exploring new ideas, which is what has led me to become a professor. The main experience through which I developed this passion was during my Ph.D. studies at M.I.T. I worked in a research group that built the Alewife Machine, one of the first distributed shared memory (DSM) multiprocessors. Our group not only designed and implemented the hardware, but we developed a compiler, operating system, and scores of benchmarks in order to evaluate the architecture. This experience taught me how exciting and rewarding doing research in computer systems can be. After that, I never looked back.
You are a recipient of many awards and recognitions including the IBM Shared University Research Award in 2005. What were your secrets that lead you in achieving those awards and recognitions?
I think the most important thing is to always do the best work that you are capable of doing. In some cases, you may get recognized for it. But more importantly, I think it brings greater personal satisfaction in the long term whether the external recognition comes or not.
Do you participate in professional organizations? Can you tell us about it?
I have been a member of the IEEE (Institute of Electrical and Electronics Engineers) and ACM (Association for Computing Machinery) for many years.
What do you usually do during your free time?
I pretty much spend all of my free time outside of work with my kids. I love taking them to all of their activities (dance and violin for my daughter, and karate for my son), volunteering at their school, and trying to teach them new things at home. I even enjoy the day-to-day “grind” like helping them get ready for school, and the bedtime routine at night. Before becoming a professor, my main hobby was playing the violin and piano. I haven’t done those things seriously for a very long time, but now that my daughter is taking music lessons, I have been able to play some music especially as an accompanist on the piano.
Few years from now, what direction do you see yourself?
As incredible as computing is today, I believe the most significant advances are yet to come. In particular, the fundamental way in which computers operate has remained relatively constant for many decades. Performance improvements, while significant, have come mainly from advances in silicon technology. But in the future, how computers carry out computations may look very different, incorporating new models of computing. For example, one radical approach is brain-inspired computing. I believe such new computational models will revolutionize what machines will be able to do, enabling them to perform tasks that only humans have been able to carry out effectively—things like reasoning, learning, making intelligent decisions, etc. (basically what the field of A.I. has been trying to do on conventional hardware for awhile). I hope I will get to see this next computing revolution, and be able to contribute ideas that help propel it forward.
As a professor, what words of encouragement would you give to your students?
All of the basic advice is pretty important: do something you love to do, work hard at it, and never give up no matter how hard things get. I would add that there are probably many things that one might love to do, so don’t get too caught up worrying about finding that perfect career. Instead, especially when you’re young, try doing different things (even if you don’t think you’ll end up doing them forever) and get valuable experiences. You can’t make a decision about your future in a vacuum. Lastly, always try to surround yourself with excellent people—put yourself in a good environment. If you can manage to do that, I think you can’t help but succeed.
- The Way I Work: Interview with David Haboud, Product Marketing Engineer at Altium
- The Way I Work: Interview with Natasha Baker, founder of SnapEDA
- The Way I Work: Interview with Todd Dust, Senior Staff Systems Engineer at Cypress Semiconductor
- The Way I Work: Interview with Bel Haba, an engineer with 400 patents