Professor of Computer Science Norman Danner has taught at Wesleyan for 22 years. Any computer science major will indubitably take a course with Danner, and he has seen the University design, develop, and hone its scientific curriculum. Over the course of his time here, he has contributed much to the Mathematics and Computer Science Department—the combined nature of which is one of the last of its kind. The Argus sat down with him to talk about his current research, the University’s unique teaching approach for computer science, and his hobbies.
Argus: What is your favorite class you have taught here?
Norman Danner: Different classes are fun for different reasons, so I still enjoy teaching my [“Computer Science I”] (COMP211) class. I enjoy that material. Right now I am teaching a class, “Program Analysis” (COMP324), and since it’s my second time teaching it, I’m still learning material myself, which makes it a lot of fun for me.
A: What do you think is a surprising hobby of yours?
ND: I don’t know if anybody would find the things I do to be all that surprising. The main hobby I have these days is baking bread. I still bake fairly basic stuff, ordinary loaves of bread, but also bagels. Bagels are my favorite.
A: Pivoting to your teaching, I’ve heard from many computer science majors that the department is in need of more professors. Do you have any thoughts about that?
ND: Like most departments, almost all of us need more faculty. I mean, computer science has had a dramatic increase over the last ten years or so in the number of students. 12–13 years ago there were nine students graduating in that senior class year. Now we have about 60 students. And this is a national trend. And honestly, you know, the administration has brought us up from five faculty members—when I arrived here I was the fifth permanent faculty member—and now we have seven, and are working on hiring an eighth. The class sizes are 25–30 students, sometimes larger. So, yes, we need more faculty, but I do think the administration has allowed us to expand.
A: Do you think, because of the drastic increase of interest in computer science, universities have expanded the topics they’re teaching?
ND: Universities in general, I can’t really answer. Wesleyan has done that, in hiring new faculty. When I was hired at Wesleyan, the kind of work we did tended to be very foundational. And, you know, for the last few hires, we’ve focused on broadening the research profile. So hiring people like Professor [Victoria] Manfredi for networks, Professor [Sonia] Roberts for robotics, Professor [Sebastian] Zimmeck for privacy and security. We’ve really tried to move in this direction; we felt that it was time where we could reasonably do that. It’s better for students to also get a broader range of those kinds of classes.
A: How do you think the University supports the Mathematics and Computer Science Department? I don’t think I know of many other universities that group math and computer science.
ND: It used to be much more common. A lot of computer science departments grew out of math departments. The question does come up, as we are one of the last research universities to have that combined department. We just haven’t chosen to split up. We haven’t seen a need to. We all get along very well and there’s a certain amount of research-level interactions between mathematicians and computer scientists. But I think the administration, for the most part, has supported us.
A: That makes sense, especially since so many people fall in the cross-section of math and computer science.
ND: The department still supports that. Even while broadening out the research profile of the department, we still have a really strong perspective that the foundations of computer science enable the more applied areas to function. So when you talk to our faculties, who are in those applied areas, the grounding in the foundations is still absolutely paramount. That is what I think makes Wesleyan’s computer science different from other small computer science programs. That is also what’s really important to our foundational gateway sequence, which is the ethos of how we understand computer science, both in terms of research and education.
A: Speaking of research, could you talk about your two research interests: practical programming languages, and—I’m going to try very hard to get this right—automated extractions of cost information from program source code?
ND: Unfortunately, I have not updated my research profile online. So we get to skip most of that. Those were old research programs, practical languages for feasible computing. Generally, an important issue in computing is after you know your programs are correct, and they do what you want them to do, asking how efficient they are. But back in the 1990s—where I go back to more or less—the computer science community realized you could essentially design programming languages where just to be a valid program already guaranteed some inefficiency. So you couldn’t write an efficient program to begin with. A colleague of mine in Syracuse University and I wondered, if we could take the same idea and make them work in languages that are similar to the languages people actually program in? Though that research led me to the original question of analyzing an existing program—are there ways of automating that analysis?
But turns out, that got me interested in technical topics in computer science which also show up in a lot of other places. And this got me interested in program analysis—I realized I want to learn more about that technique. Program analysis is really more the technique, but the questions are really more things like privacy and security, web browsing privacy, detecting what kinds of tracking websites are doing. Program analysis is kind of one way of answering those kinds of questions.
A: Could you tell me more about your academic journey?
ND: I did my undergraduate in math at UC Berkeley, and my graduate degree was in mathematics at Indiana. But my PhD advisor, Daniel Leivant, was in computer science. I had gone to Indiana to work in logic, [but] after about a year, I realized I really didn’t want to do that research. So we worked on finding another advisor, and connecting up with [Leivant]. The view of logic at Indiana, at least when I was there, was a very broad view: even if you’re getting a math PhD there’s no reason why you can’t work with a guy in computer science. And then I just got really lucky ultimately. I got a postdoctoral degree at UCLA in the math department, but it was for teaching basic programming classes. That was really lucky for me because I’d been thinking I want to move more towards computer science and that research, so that gave me the credentials to then get a job in a computer science programs.
A: Would you say that your teaching approach has changed much over the years?
ND: I suspect the answer is yes, but it might be more what I think is now more important to teach. I’ve certainly changed the mechanics of some courses a lot. I used to have very long bi-weekly or three-week long assignments in the introductory classes, just so you could get a lot of content in those. And I found that it just simply didn’t work at that particular level. So I’ve gone all the way back to essential weekly homework—which to me is much more boring, but the students end up learning the material better. We’ve certainly changed content, but that’s not so much me, that’s more [the whole Department]. We’ve thought about whether this is the right curriculum for computer science at Wesleyan—not so much about what they want to know, but what they should know to continue their studies.
A: What do you think about the Code_Wes club that students started to support coding interest on campus?
ND: I think it’s awesome. This sort of thing comes and goes, and the more it comes, the better. I remember some 10–15 years ago, we had a cadre of students interested in having extracurricular coding and programming activities. We thought that was fantastic—you don’t learn everything in classes, and there’s no way you’re going to. So you should be reaching out. The fact that there is a cohort of welcoming students that gets everyone involved no matter what their level or what they can contribute is great. It would be nice if faculty had more time to organize things like this. But one, we don’t, and two, I’m not sure it would be so good. It’s probably better for students to figure out what they want to do.
A: If you could give college freshmen interested in computer science any advice, what would it be?
ND: The main thing I wish more of them would realize, is that what they’ve typically seen presented as computer science is not necessarily computer science. Computer science is a scientific discipline: we have research subjects, we have languages and techniques to ask and answer questions. And while programming certainly comes up for most of us, that’s not the actual science part. Occasionally it is and it’s important and it can be a lot of fun. But a lot of times, incoming freshmen, their perspective on computer science is that it’s mainly programming. So they can be a bit frustrated when they get to classes like [“Computer Science I” (COMP211) and “Computer Science II” (COMP212)], where, yes you have to do programming, but you have to do a lot more.
A: That’s fascinating—especially because programming is just such a natural heuristic for thinking about computer science that it leaves very little room for anything else.
ND: That’s also important for incoming students to realize. It depends on how much they enjoy programming—if they absolutely hate sitting in front of a computer, computer science probably isn’t the best thing for them. But if you can treat sitting in front of the computer as a necessary chore to do the things that you like to do, there’s plenty to be done that’s not just programming. If you work in any of our research groups, certainly you’ll do some programming for many of us—but the interesting questions are deeper, they’re much, much deeper.
Janhavi Munde can be reached at jmunde@wesleyan.edu.