Classroom Q&A: Amit Shesh on computer science education for everyone

Author: Milton Posner
Date: 09.23.21

Spend a few minutes with Professor Amit Shesh and his love of computer science becomes obvious. He wants his students to feel that same lasting passion he discovered as an undergraduate in India two decades ago. And in a field that can intimidate outsiders and newcomers, the sixth-year Khoury College of Computer Sciences professor believes that computer science education must be made accessible for everyone.

Amit Shesh, Director, MSCS BostonAmit Shesh, Director, MSCS Boston

What first drew you to computer science?
I had very little computer science exposure before college. But it was something that was sought after [in India] when I was a kid. The brightest students either became doctors or engineers, and within engineering, computer science was the top discipline. My first college semester, I took a programing course, and I knew almost immediately it was the right decision. I was a bit lucky, going into a major thinking I’d like it and then liking it exactly as much as I thought I would.

Within computer science, which topics are you most passionate about and why?
My dissertation was on computer graphics; that’s the area within computer science that interested me the most. Two things drew me to it. One, I discovered through taking computer graphics that I’m a very visual person. Two, we had to take a lot of college-level math. Computer graphics was the best application I had come across for all the math that I had learned before, specifically calculus.

I’ve been teaching for more than ten years, and my interests have broadened, but computer graphics remains one of the things that draws me the most.

What should a layperson understand about computer graphics and its relevance to computer science?
Computer graphics is actually one of the easiest sells to somebody who is not in computer science because it’s everywhere. Usually, when I teach a computer graphics course, most of the students don’t have experience doing computer graphics. So, I start with, “OK, let’s come up with applications.” Everybody says games, everybody says movies, because those are the two most accessible things.

Now, there’s a big difference between using computer graphics and learning how to do it, which is very technical and quite mathematical. One other motivating factor for people not in computer science is that they will actually use math that they did in high school. If you thought, ‘where am I going to use geometry?’ or whatever you did in high school, this is one of the places where it comes up.

Which classes are you teaching this semester? Are there other classes that you usually teach?
I’m teaching CS 3500, which is “Object-Oriented Design”. In the bachelor’s program in computer science, we have a required sequence of four programming/design courses. This is number three in that sequence.

Normally, the courses that I teach fall into the programming and design bucket. A lot of them are required for both undergraduate and graduate students. The students that I typically teach have had some coursework using programming, and then the courses that I teach take it to the next level, making it bigger, more complex, and therefore more interesting. The course leaves off at a stage where students are equipped to succeed in their co-ops.

Can you tell me more about the “Object-Oriented Design” course?
This four-course sequence emphasizes writing programs that not only solve the problem correctly but are also designed and documented well for the benefit of others who work on it. Often when students think about computer science and specifically programming, they think it is all about writing some source code that just works correctly, and that is all that matters.

But software development is much larger. The easiest analogy is if you’re good with words, that’s not enough to make you a successful novelist. You also have to know how to frame the thing that you’re trying to say. You have to be communicative enough that somebody can read it and feel the same emotions that you did when you wrote it.

All of this is in software development as well. It’s the difference between ‘good with words’ versus ‘successful novelist.’ Everything you need to bridge that gap? That’s software development. And that’s what the four courses try to teach you. Object-oriented design is a specific way of thinking about the design of computer programs. In the two courses prior to this, the programs they write and the designs they create are quite small. Students often report that this object-oriented course feels more real world because the scale and complexity of the problems and their solutions has gone up.

Besides teaching at Khoury, what do you do professionally?
I am teaching faculty, so my job is primarily teaching. It’s something I always wanted to do. I also partake in research occasionally. My research over the past few years has moved on from computer graphics to general computer science education.

I’m invested in making sure that computer science is made attractive and accessible to everybody. Students come into computer science from different backgrounds and with different perceptions and perspectives. All of that is an asset. That also means that we have to teach students in a way that makes sense to them, relating it to their background whenever we can. That challenge is what draws me to computer science education—it is a combination of research with my experience and love for teaching.

I am also the director of the Master of Science in computer science (MSCS) program at the Boston campus. I oversee the MSCS curriculum and work with faculty to keep our course work challenging, updated, and interesting. I also work with other Northeastern campuses to homogenize our program across locations. This role also allows direct communication with our students. I work with our academic coordinators to help students navigate our program.

What’s the most important quality a student needs to succeed in computer science and in your classes?
You need to have perseverance and agility, a willingness to learn new things. Learning to be a good computer scientist is like training yourself to run a marathon. Some of us are naturally physically inclined to run well, and then the rest of us look at those people and say, “Ah, running is so easy for them.” But then we try to make up for that innate talent through practice. Computer science will test you and your patience in unique ways. I believe computer science requires but also teaches us perseverance.

Then there’s how fast the industry moves. It surprises nobody, including me, that by the time students graduate from a computer science program, there’s a fair chance that something that they learned is already outdated. You have to be ready. That’s the difference between getting a bachelor’s or a master’s in computer science versus learning programming. The skills that you get in a good computer science degree are not just to hit the ground running when you graduate; it gives you a set of tools that will serve you for a lifetime so that you don’t have to return to college to reeducate yourself every few years.

You have to go with the times, and that is reflected in the industry. You have to embrace whatever is new and realize that you can be a computer scientist all your life and still not know many things that people half your age will know. It happens to me every day.

Is there a non-computer-science fun fact that your students might not know about you?
Boston is the warmest place I’ve lived in in the US. I graduated from the University of Minnesota, then worked for seven and a half years in central Illinois, so Boston really is warmer than both of those places. But in my lifetime, I have lived through a temperature range of –40 to 120.

Subscribe to the Khoury College newsletter

Newsletter Subscription

Enter your information to subscribe now.

This field is for validation purposes and should be left unchanged.