Skip to main content

Computer Scientist’s Work Passes the Test of Time, Again

Second test of time award honors AspectJ, which makes it easier to write code for complex applications.

UC San Diego computer science professor William Griswold has received his second test of time award for work that has had a major impact on the field


  • Josh Baxt

Published Date


  • Josh Baxt

Share This:

Article Content

UC San Diego computer science professor William Griswold has received his second test of time award for groundbreaking work. This time, he was honored by the Association Internationale pour les Technologies Objets (AITO) for his 2001 paper on the AspectJ programming language, an aspect-oriented extension of Java. The test of time award recognizes work that has had a major impact on the field.

The seminal paper, An Overview of AspectJ, described ways to extend Java, the most popular programming language at the time, and has been cited more than 4,000 times. The paper transformed aspect-oriented programming (AOP) into a mature research topic, influencing context-oriented programming, feature-oriented programming and software product line techniques. The award was presented at the 2001 European Conference on Object-Oriented Programming (ECOOP).

This is the second test of time award for Griswold, a professor in UC San Diego Computer Science and Engineering Department. In 2013, he and colleagues received the ACM SIGSOFT Impact Paper Award for Dynamically Discovering Likely Program Invariants to Support Program Evolution, which broke new ground in software engineering.

In the ECOOP paper, Griswold and co-authors describe a way interrelated program components can talk to each other and still remain independent. This has obvious advantages, such as being able to add or extend one component without having to think about or update others.

“Let’s say I’m running a bank, and I want my clients to accrue interest, or I want them to accrue mortgage interest that they have to pay off,” said Griswold. “Those little increments of new functionality now become an interesting part of a much larger thing.”

The key is managing the linkages between components. Accruing interest in a savings account is like a deposit but happens on a regular basis. A timer program tells the interest calculating program when to do its job. The two need to interact – the interest piece must listen for the timer – but they also need to be kept apart or decoupled.

In this way, “the timer only knows about signaling the time's up,” said Griswold. “It doesn't know about updating interest. Likewise, the interest calculator doesn’t know about a timer.  We broke these two concerns apart. AspectJ makes the introduction of this listening functionality easy. You can tap into a very large number of events very concisely, rather than having to specify every last detail.”

This advance made it much easier to write code for complex applications, while reducing the risk that changes to one component could interfere with the other. “Banking is always coming up with new interest-bearing instruments,” said Griswold. “Some compound monthly, some compound by the minute – it’s confusing, you have to connect a lot of timers to different activities. Giving the programmer aspect-oriented support to respond to requests for new functionality is critical.”

Share This:

Category navigation with Social links