Jeannette Wing is a world-renowned computer scientist. During her time as a professor at Carnegie Mellon University, she co-wrote a paper with Maurice Herlihy in 1987 in which they defined Linearizability. This property in programming further defines the property of atomicity which describes operations that cannot be interrupted before completion. Linearizability helps describe the beginning and end of these operations and allows better implementation of atomic operations. In computer systems that are able to perform more than one operation at a time, like the multi-core processors in almost every computer and phone, these atomic operations prevent each process from interfering with the others in a way that would prevent them from functioning correctly. For example, when booking passengers on a flight, it’s important to assign seats to only a single person at a time. Without atomicity, it would be possible for two users to access the same seat at the same time and one person could accidentally overwrite another and have one person’s booking completely disappear. Similarly, if a computer system at a bank were to be adding up all of your transactions and deposits to find your current balance, it would be possible for some of the transactions and deposits to be left out or counted twice, leaving the system unreliable.
Later, in a 1994 paper Wing contributed to defining the Liskov Substitution Principle. This idea defines how computers understand different types of objects, stating that every object of one type should be able to be replaced by an object of the subtype without any problems. Imagine you’re a school trying to keep track of your sports equipment for PE class and teams and that you know you have several types of balls for different sports. You know that you want to store all of them and lend them out and you take care of them all the same way. This principle says that you should be able to have a category “Balls” and subcategories like “Footballs” and “Tennis Balls.” Without following this principle, your system wouldn’t be able to understand that a football is a ball and would crash.
Her work in education is what the STEM Center is most thankful for. In her 2006 paper describing “computational thinking,” she helped define a movement towards making students more prepared to use computers as they solve problems and understand the world. Broadly, computational thinking is a way of investigating problems in a way that leads to being prepared to use a computer to help understand and solve the problem. This paper has been featured in many National Science Foundation proposals, including the STEM+C project at the STEM Center in which we are learning about integrating STEM and computational thinking into curriculum.
Featured Image: World Economic Forum [CC BY-SA 2.0 ]