|Previous portrait||Dr. Mary Lou Soffa
Professor, Computer Science
School of Engineering & Applied Science
IT HAS BEEN AN AMAZING RIDE
What do you expect when you interact with computer systems and software? You expect the software to be correct (does what it should do), reliable (does not have bugs), fast (you don’t want to wait long for a response), secure (you don’t want someone to take your data), and usable. My general areas of research are programming languages and software engineering. The focus of my research during my entire career is to develop techniques that help to meet the above expectations. I have explored various approaches on these increasingly important elements of software. Here I present some of my research on testing, code optimizations and warehouse scale computers.
We want to make sure that the software we develop is correct. The best way to do this is to develop proofs of correctness for the software. Proving that a large piece of software is correct is beyond the state of art right now (maybe in the near future). The way we try to ensure correctness is to test it. That is, we run the software many, many times with different inputs and try to cover most of the code and situations. But how do we do this? First we develop criteria of what we want to cover – say branches or small regions of code. Then we generate test cases to run to try to cover the criteria. My research has developed techniques that test large software, test for security flaws, and techniques to actually generate inputs.
In traditional software, testing is done only of the software itself. But there are times when we have to consider the environment in which the software will run. Examples of this are graphical user interfaces (GUIs) (how we interact with software) and databases. My research developed methods to test databases applications and GUIs while considering the environment (e.g., database, interactivity of GUIs)
Throughout the years, new computer architectures have and continue to be developed with the result that the execution times of applications are faster. However, regardless of the architecture, we can apply transformations to the code, which studies show can improve the performance by about 40%. Our research has focused on developing new optimizations, new ways of applying them, and ways to automatically implement them. For example, the order in which code optimizations are applies has an impact, as some optimizations create new opportunities for other optimizations and some destroy these opportunities. We developed proofs and examples that demonstrate which optimizations create the potential for other optimizations and which destroy the potential. Thus, by properly ordering optimizations, we can get better performance.
WAREHOUSE SCALE COMPUTERS
When we talk about cloud computing, we are not talking about computing in white, soft clouds but in huge, ugly warehouses. These warehouses cost billions to build and maintain and have hundreds of thousands of computers, usually multi-core servers that can execute application in parallel. However, because of their shared memory architecture, the applications can contend for resources, such as memory, cache and bandwidth. Thus, applications running on the same machine can negatively impact on one another. Thus, internet organizations typically run only one application on a multi-core to insure appropriate response time. In our research, we developed run time techniques that enable multiple applications to run on a multicore server without affecting the response time of an interactive application, thus reducing cost and energy utilization of these warehouse computers.
EVERYTHING HAS CHANGED
I got my Ph.D. in 1977 so everything has changed and many things are new since 1977 – new computers, programming languages, accessibility, the Internet, browsers, etc. It has been an amazing ride.
I did my Ph.D. thesis using punch cards. My first job in the computer field was at the Bureau of Mines in Pittsburgh where I had to program a vacuum tube computer using wires. It is hard to imagine today what it was like back then. So, everything has changed. I do want to mention that I think the culture today in computer science is better for women. When I first started my faculty career, I felt very isolated without much support. Also, I noticed that when I used my first name as an author on papers, they were likely to be rejected – but when I just used my initials, they were likely to be accepted. Needless to say, that does not happen today – so I use my name!! We also have a national network of women whose members offer information, support and encouragement, which we did not have when I started.
In computer science research, there are so many interesting problems and challenges that continue to develop. The field grows so quickly with more and more technology being introduced almost daily. The field is so stimulating and exciting. Currently, I am working on a Cloud Mentor that helps to port applications in the cloud that guarantee the requirements of an application. Another project is looking at making algorithms transparent through testing.
WHAT I LOVE MORE THAN ANYTHING
What I love more than anything in computer science research is working with students. My research success depended on them. Half of my 32 graduated Ph.D. students have been women – with the national average of women Ph.D.’s being produced around 15%. All of my students, men and women, have all gone on to become productive and influential computer scientists. I am most proud of them.
For more on Dr. Soffa’s research and teaching see http://www.cs.virginia.edu/~soffa/index.html%3Fp=6.html
U.Va. CHARGE – Discovery. Innovation. Diversity – Follow us on Facebook at uvacharge.
Tell us what you think of the exhibit!
© Copyright 2017 by the Rector and Visitors of the University of Virginia
For more info, to join our listserve, or to get involved contact: firstname.lastname@example.org
Sponsored by the NSF ADVANCE AWARD #1209197.