Computer science professor Prasad Jayanti began his career studying mechanical engineering at the Indian Institute of Technology in Madras. While pursuing his master’s degree in the same field at the University of Delaware, Jayanti discovered a different calling: computer science, with an emphasis in concurrent algorithms. For over two decades, he has worked at the College, teaching nine different undergraduate courses. Currently Jayanti is teaching Computer Science 1, “Introduction to Programming and Computing.”
What first got you interested in studying computer science?
PJ: I came to the U.S. to do a master’s degree in mechanical engineering and during that time, I happened to take a class in computer science, an architecture class actually, which I found fascinating. It was so fascinating that I thought I should learn more computer science. Curiously, when I applied, they wanted me to do a Ph.D. program instead, but I was not committed enough to computer science to agree to doing a Ph.D. program and insisted on a master’s degree — they ultimately agreed. I found the journey very interesting and continued with that.
How did you come to teach at Dartmouth?
PJ: When I was finishing up my Ph.D. at Cornell University, it was very clear to me that I wanted to be in a university as a professor. In addition to research, which is fascinating, I have always been interested in teaching, even as a high school student. Even at Cornell as a Ph.D. student, I taught a full course, which confirmed once more that I wanted a job that was a combination of research and teaching. I applied to a couple of places, and Dartmouth is one of these rare places where research and teaching both are truly valued. It was a very attractive place for me to come, and I continue to believe this is the right place for me.
Could you tell me a bit about your area of expertise in concurrent algorithms?
PJ: An algorithm is a recipe, a program, a series of instructions that will need to be performed to solve the problem of interest efficiently. What a concurrent program is, [is] that you have a problem and not one, but several processors — several computers — are coordinating with each other to help solve the problem. Obviously, when there is a team and not an individual working on a problem, more problems arise because coordination is not always easy to achieve. It is exactly so in the context of computers as well, because these computers can all proceed at different speeds and some of them can fail, yet the task must still be successfully and efficiently completed. How you overcome those challenges is the concern of the field of distributed computing.
Can you tell me about the current research you are pursuing?
PJ: Suppose many processors are working on a problem and along the way, some of the processors crash. When a processor crashes, it loses all its memory and it even loses a sense of where it was in the program. All that is preserved is whatever you have taken care to maintain in nonvolatile memory, but anything you had in your volatile memory, even the sense of where you are in your program, all that is lost when a crash happens. Subsequently, when a computer recovers and restarts, it restarts all right but it restarts without a sense of where it crashed. But you still would like to solve the ultimate problem of interest correctly and efficiently despite the crash and restart. How do you make that happen?
Do you have any advice for students interested in pursuing computer science?
PJ: Firstly, the picture I want to dispel about computer science is that it leads to a job where you are holed up in some windowless basement somewhere and just in front of a computer all day pulling your hair writing hairy code. That may be one picture of a computer scientist, but the picture of a chef could be someone who burns their hands all day — that’s not necessarily the whole picture. Computer science is full of creative ideas, and when you think of computer science, it’s really a science. All that’s in the computer is some silicon and iron, so how are they related to the computer? Why is the computer behaving the way it is? How have we successfully made it behave that way? Even once we have the machine, our programs are making that machine more and more intelligent. When you write a program, the computer must first transfer it into machine language. How is translation from this to that done? How that is happening is not boring work. It’s creative, mental, intelligent work. Computer science is a science — the science of problem-solving — and that’s fascinating.
Secondly, sometimes students worry that if perhaps if they haven’t had enough computer science in high school, then they are at a disadvantage. There is none of that. Our own curriculum, and in most other places and universities as well, is designed in such a way that anybody, whether or not they have had prior experience, can enter the curriculum and do extremely well. So it’s a science, it’s intellectually fascinating. It challenges your mind; when you pass, it pays you well and takes care of you more than adequately and it’s open to everyone. Anyone who loves a little logical thinking will love computer science.
This interview has been edited and condensed for clarity and length.