Any computer scientist 70 or more years of age today knows almost every other computer scientist of those same ages, as few were in the discipline during its fledgling days. One such individual from that era is Daniel Berry, a professor in the Software Engineering group at the Cheriton School of Computer Science.
During his 50-year career as a computer science professor, he has studied, researched, and taught computer science across three countries and multiple institutions. “Over those years I’ve had the privilege of meeting many of the pioneers in computer science and working with some of them,” Dan said.
Like many of his generation, his love of computers and programming began early. “I started programming in 1965 during the summer between my junior and senior years in high school,” he reflects. “I wrote my first real-world application, a party date matching program, in 1966, during my senior year in high school. As an undergraduate at Rensselaer Polytechnic, I was programming to make some money, but I was firmly a math major. When I got to graduate school at Brown in 1969, I discovered that I had promoted myself to my level of incompetence in math. I saw that Applied Math had just started a Computer Science program. Figuring that I was still competent in that, I moved over to Computer Science. At some point during my graduate studies, Brown changed from giving a PhD in Applied Math with a concentration in Computer Science to a PhD in Computer Science. I was the first, or maybe the second, student at Brown to get a PhD in Computer Science.”
Dan ended up earning a Bachelor of Science in Mathematics from Rensselaer Polytechnic Institute in Troy, New York, in 1969, followed by a PhD in Computer Science from Brown University in Providence, Rhode Island in 1974. He never bothered to get a Master’s degree because he knew that he wanted to be a professor.
While writing up his doctorate, Dan joined the Department of Computer Science at the University of California, Los Angeles in 1972. He was the first faculty member at UCLA with a degree in computer science. Other faculty members were mathematicians, physicists, chemists, and engineers who used computers in their original fields and got hooked.
“Back in the seventies, when I started being a professor at UCLA, everyone taking CS classes was there because he or she loved computers and programming,” he recalls. “The students and faculty were real live computer geeks. Students wanted programming assignments. They were not something to be avoided, because this was the only way you could get access to a computer. Computer science departments then typically had one, big computer. You couldn’t just go up to it and start using it. You needed to have a reason, and a programming assignment was a good reason.”
UCLA, of course, is also the birthplace of the Internet, and Dan arrived only three years after its launch in 1969.
Dan reminisced, “UCLA is where the APRANET, what is now the Internet, was born. Len Kleinrock, a faculty member, was a key developer of the ARPANET, and Vint Cerf, an inventor of TCP/IP, was a student who had just graduated when I arrived at UCLA. Steve Crocker, Charlie Kline, and Jon Postel — all those pioneers instrumental in creating the Internet were at UCLA at that time.”
Experiencing history-making moments at UCLA must have been in the cards because it was during this time that the university also pulled off a series of seemingly impossible wins.
“I enjoyed watching UCLA football at the Coliseum,” Dan said. “But the best, of course, was watching UCLA basketball, especially at that time. It was incredible. UCLA’s head basketball coach, John Wooden, was the best coach for any college sport at any college across the USA. He led the Bruins to seven consecutive NCAA March Madness Championships. No coach since has ever done better than back-to-back victories. I was there for the last half of that winning streak.”
After 15 years at UCLA, Dan joined the Computer Science Faculty at the Technion in Haifa, Israel.
“I loved being at UCLA, but I joined the Technion as faculty because I wanted to live in Israel and because I felt I could make a bigger difference there than I could in the US.” While at the Technion for 11 years, he worked half-time for four years at the Software Engineering Institute at Carnegie Mellon University in Pittsburgh.
“CMU’s School of CS wanted to start a Master of Software Engineering program,” Dan said. “I had already gone into the new field of Requirements Engineering at this point. The program was supposed to have a requirements engineering course. So, I joined the SEI group that was prototyping the MSE degree program for the School of CS, specifically to develop the requirements engineering course. The course we teach today follows the same basic syllabus I set up — 50 per cent of what I teach in CS445 and SE463 today is based on that original course.”
In 1998, Dan moved to Canada to join the University of Waterloo in what was then its Department of Computer Science.
Those who have worked with Dan know that his hearing impairment limits his perception to sounds below middle C, making spoken language for him all but impossible to understand by ear. He communicates face-to-face readily using a combination of the lower-pitch sounds he can hear coupled with lip reading to understand spoken English.
“Almost everyone in Israel speaks English as a school-acquired second language so I could get by, but I could never learn to read lips in Hebrew despite much effort,” he said. “I enjoyed my time at the Technion, but because it was hard to communicate with people in Hebrew, I decided to move back to North America to a North-American-English-speaking place. But I also wanted to be within a nonstop flight to Israel so I could visit easily. And I wanted the place to be safe and affordable. That meant eastern Canada.”
Since coming to Waterloo, Dan’s research has focused mainly on requirements engineering.
“We have come to the realization that the lack of good requirements specifications for software — that is, a complete description of what software you’re developing is supposed to do — is the main cause of software defects. My current research is trying to identify the nature of the requirements whose failure to be implemented causes software to fail. It turns out that most, about 70%, of these missing requirements concern handling the inevitable exception conditions to requirements that are already implemented.”
Interestingly, this often means that more than 90 per cent of the code is necessary to deal with the exceptions that happen less than 10 per cent of the time. The less frequent and more obscure an exception is, the more code is required to handle it.
“The big problem is that too often in the name of agility and getting software launched before the competition, it is developed without spending the time to identify the exception conditions.” Dan, his students, and colleagues try to identify the reasons that requirements engineering is not done in practice in industry, the consequences of that failure, and how to remedy it.
With regard to teaching, Dan says, “I’ve learned so much from my students at all levels. I try not to give a student a topic I’m interested in. With such a topic, it’s very hard for me not to impose my ideas about how the topic should be pursued, and that’s not good for the student. I very much prefer that the student come to me all excited about a topic he or she has picked and teach me all about it.”