Professor Tom CortinaAssociate Teaching Professor, Computer Science Department
Assistant Dean for Undergraduate Education, School of Computer Science
Interview by CS Undergraduates: Dixie Kee and Young Jae Park
Tell us about your background. Where are you from, and why did you choose CS?
When I got into computing, it was in the 80's, when PCs were becoming really big and the Macintosh came out, and there was a big interest in getting into computing, very similar to the dot com boom. I had taken some computing courses in high school and learned Basic programming. I loved it, but I was very good at math, music, and some other things too. I was trying to figure out what to do major-wise, and I ended up choosing CS mainly because at the time, CS was the most lucrative [laughs]. And it still is. When I looked at the options, I thought, "What would I do if I were a math major, or a music major?" Of course, music I would probably perform, and I haven't done that in a while now. So I decided, "Well, I'll go into CS." Like a number of students I have, even here at this university, you go into CS and you think, "Well, a lot of programming, right?" And then you find out that it isn't; well it is programming, but it's a lot more. So after a couple years, when I was a junior as an undergrad, I started realizing what computer science really was, and I liked it. I said, "Well, this is kind of cool. It's not just programming; it's all this foundation, and it really got a technical core to it, just like math does, and physics, and I really enjoy it."
I finished the degree and decided to go right on to my master's, probably because in the back of my mind, I always wanted to teach. Part of it was paying the student loans, because if you're a full time student, you don't have to pay your student loans, so I said, "Oh, I'll go for a master's degree and learn more about computing." Having a master's degree when a lot of people were getting a bachelor's degree in CS gave you an advantage. So I thought, "Even if I go into industry after I get my master's, I'll have a deeper understanding of a lot of topics, and that might help me when I get my job." So, I started doing a master's, and was a TA like many of the grad students we have here and caught the teaching bug almost immediately. The faculty I was working with noticed that too, so they gave me an opportunity to not only assist, but actually teach a class as I finished the master's degree. I did very well, and an opening was available at Brooklyn Poly for a lecturer, similar to the teaching track that we have here at CMU. So I decided to try it out. I said, "You know what? I'll go part time as a grad student and I'll start to teach," and I just took off. I loved it immediately and did very well, so I sort of became a lecturer there while I was still doing the graduate work. At that point being a lecturer at Poly, the next step was to do a Ph.D., so I decided to go into the Ph.D. program, passed my qualifications fine, and just kept teaching and teaching.
The Ph.D. didn't get very far for a while. I worked in a research center at Poly for some time, doing programming and software design work for a couple years and I taught on the side as an adjunct, but I still missed teaching, so eventually after a couple years of that, I decided to teach full-time again. I did that for eight years or so, and at some point, I just thought, "Well, I'm going to be a lecturer. That's what I want to be." I put the Ph.D. on hold and went over to Stony Brook University on Long Island and got a position there, where I could grow more as a lecturer, as teaching faculty. I did that for about two or three years when one of my professors back at Poly had a project that she was starting to work on that she felt would be really interesting because it had an educational component to it. So I went back and started doing Ph.D. work back at Poly while I was teaching at Stony Brook. I juggled those two for about two or three years and then eventually got the PhD done in 2003. Next year CMU was hiring, and I decided to put an application in, interviewed with the folks here, including Mark Stehlik, and I just felt when I interviewed here, and I hope it's still true with them, I felt like I fit in very well, very quickly. I felt like this is the place I wanted to be, and it seemed like I was talking the same language as everyone in terms of pedagogy and education. Sure enough, they wanted me to come, so I came here in 2004 and have been here since. I was promoted in 2009 to Associate Teaching Professor, and then this past year because Mark Stehlik made a decision to go to Qatar, they asked me to take the reins as Assistant Dean.
So that covers our second question too, where did you go to school and what made you decide to CMU?
So you've taught 15-105, 15-121, and 15-110 here at Carnegie Mellon. Why have you focused on teaching intro courses, and what do you love most about this role?
Additionally, one of the reasons Stony Brook hired me was because at Poly I taught larger classes, especially during the dot-com boom. We had these big classes, something like 200-300 students at a time, and not every faculty member was comfortable doing that. I am, so I went in there saying, "I can do that." That's why I ended up teaching a lot of the intro courses, because they were very, very large classes at the time, to try to get the students acclimated to what computing's about. I have students from all kinds of academic backgrounds, in terms of subject matter, humanities, science, social science, business. Trying to connect to all of them, it just seems like that's where I felt most comfortable, in terms of what my role would be and what I could do. Yes, I love teaching the upper-level courses, but it seems like I had that knack to be able to connect, which is why I taught 15-110 for example. Trying to be able to reach out to students where computing is not something they thought they could do, and they really didn't understand what the field was about, I try to package it so that they get that perspective, and then hopefully many of them will go on and say, "I want to do more of that."
What's your impression of the class of 2015?
Previously, you said that you got interested in teaching jobs since you were pursing an education in computing, but have you always wanted to be a teacher?
I did work at IBM for a couple summers as an intern and at Sperry, which is Unisys now. Sperry Corporation had a lot of government contracts, and they did a lot of engineering work. So I did do internships to try to get a feeling for industry and what that was like, but I kept coming back to teaching, and eventually I just said, "You know, that's what I'm going to do."
You've given a lot of presentations in the past about computational thinking. What is it and why should everyone know about it? It's an interesting topic area that Jeanette Wing, our department head, had posted an article about and had got people talking about this. A lot of people had different views of what it is. I think about computational thinking as using the principles of computer science to solve problems, where solving it another way would not give you the same insight. Or it would not be solvable otherwise without using some algorithmic thinking, computational processes, recursion, or things like that. We think about just how the acceleration of the development of apps and technologies, like the iPad and things like that have changed how we live. A lot of that has to do with thinking about using computational processes to make us live our lives differently. I try to do that in the intro course—looking at what are the big ideas in computing, rather than what are the skills you need as a programmer for example, which is a specific part of computation, but it's much bigger than that. The bigger ideas are what influence other fields, like finance and biology and other areas, so that's what I try to address. It's using computing to solve problems that would be hard or impossible to solve using traditional methods or other types of techniques.
We see that you've been very involved in programs to introduce students into computer science in the past, programs such as CS4HS and ACTIVATE. Tell us a bit about these programs and your thoughts about current trends regarding entrance into the field of computer science.
CS4HS is for computer science teachers, mainly people teaching AP although it's expanded. Now we have math teachers. We get teachers teaching kindergarten to 8th grade. They do some computing with ALICE, for example. They'll come in, and we provide small nuggets of information for them, various types of activities. One is called "Computer Science Unplugged", which I didn't create but wish I did. It illustrates computer science principles without a computer and involves a lot of hands-on, kinesthetic activities. People walk on a mat of a sorting network to learn how to sort concurrently, for example. There are no computers involved at all. We have some labs where teachers work with robots. There's some programming involved there, of course. We have some material on computability: can a computer solve any problem that we pose to it? Many teachers think that the answer is yes, but the answer is actually no. So we introduce that notion to them, not nearly at the same level as you get in 251, but we give them the basic idea. Like the halting problem, there are some problems that the computer can't solve, and we talk about what kind of properties these problems have. We usually have some faculty that talk at CS4HS about their current research, and we usually pick faculty members that can talk about their research in a general way so that people who have a wide variety of backgrounds can follow what they're doing. As an example, Eric Nyberg, who's involved with the Watson jeopardy challenge, spoke to our teachers at CS4HS in 2011. He discussed what the process was as they were designing Watson, the stumbling blocks and what kind of things the teachers' students would need to know if they wanted to do this kind of work as an undergraduate or pursue computing as a career. The teachers just loved it; so we give them these little nuggets, and we tell them to go back into their classrooms and try one or two of them out in their class, to try to change the curriculum or introduce it to some of their students.
We've gotten a lot of great feedback. CS4HS started here at Carnegie Mellon in 2006, which Google supported, so Lenore was very beneficial in helping get that support. Then it expanded to the University of Washington and UCLA. I helped out consulting with them both, and I go to the University of Washington each year to help them with theirs. Google's helped to expand it to the point where last year, they had over 60 universities doing CS4HS, of various forms. Each university tailors it to the needs of their teachers that are coming in. Many of them are local workshops. Ours is national in the sense that we get teachers from all across the country, whereas other universities might just have people in their local area come in. That's CS4HS and we're going to do another one this year again. It's our seventh one.
Besides that, there are the ACTIVATE workshops. That grew out of a NSF grant, a proposal that I was involved in with Wanda Dan, who's leading the Alice team, and Carol Frieze, who's leading Women@SCS. We got together and started talking about questions like, "How do we get teachers involved in Pittsburgh and the surrounding area where there aren't that many computing classes?" They started to decrease the number of classes, especially in the Pittsburgh area, when the College Board decided to drop the AP Computer Science AB exam, so they only have A now. We've heard some schools in our region like Southern Allegheny County started dropping their Computer Science AP class altogether because they only had one class left, and it only had maybe five or ten students. They could maybe put a teacher who taught that in a different class, like a math class or something else where they really needed the support. So we started asking, "How do we bring computing into the classroom in our area?" CS4HS didn't attract local teachers. It always attracted teachers around the country, but not necessarily around our region because we didn't have a lot of computing teachers; so we decided to look at STEM (Science, Technology, Engineering, and Math), and we said, "What if we tried to attract math and science teachers?" We could show them how they can add some computing to their classes and get computer science on the radar of their students, get them be aware of it as a potential field of study and career path. Many students who don't see computing in high school then come to schools like Carnegie Mellon, and they're not likely to take computer science courses unless forced to. They don't necessarily think of it as being a potential career and that there are many career opportunities for them. I think a report came out recently that said that the number one job in demand or the most desirable job is software engineering, and part of that is the work, part of that is the pay, of course. There are others like database administration and other things that are computing related, which are all in the top ten. So there are a lot of jobs available, a lot of potential to do computing not just for computer science sake, but also for finance, science, statistics, and there's all those areas where computing's used. But if students don't see a little bit about what computing's about in high school, they'll never consider it, so we proposed NSF. We had workshops to try to attract math and science teachers in the local region to come, and we would train them how to program a little bit and how to think computationally. Those teachers then go back and try to use some of those skills in their classes' curriculum.
As a side note, I have a lot of respect for many of the teachers that teach high school, a lot of respect when I learn what they have to deal with in terms of their environment, environment standards and the resources that they have or lack thereof. We understood that many of the teachers wouldn't be able to go back and create computing classes. They just don't have the resources for that or the time, so we want to create workshops where they can adjust or tweak their current courses and add a few computing components. That way, students start to see computing not as applications like Excel or Word, but actually, what we consider computer science, even if it's programming. Maybe some of the students might show some interest and want to explore, so we get the teachers resources on the web and materials that they can get to the students, like textbooks, so students can explore more.
Switching gears here, what motivated you to switch your role from advisor/teacher to Assistant Dean?
The department was behind me, supporting me, so that was good. I felt comfortable that Jeanette Wing, Randy Bryant, and other faculty were really supportive and thought that I would do a good job, I sure hope, as Assistant Dean. That helped me make that decision. I think it's time for me to get more connected with the majors that we have here. I was working with the freshmen in 15-122 in 2010, which made it easier for Mark to be comfortable to hand off his advisees to me because many of my advisees knew me already. That was a consideration, and I thought that was a wise thing to do. So we're hoping that that helps me in the new role, that many of the students going through the new curriculum will also know who I am. They'll know that I'm watching them and making sure that they get through and are successful.
What do you think will be some challenges of taking over from Mark, since he has been here for so any years?
What are your opinions on the curriculum changes from 2010? Have there been any changes in student performance?
As far as the imperative versus functional programming paradigms, I'm okay with students seeing both paradigms in their first year and think that's important. Other very good universities that we compete with do that too, so I think it's important for students to see that and then follow their track. Some of our courses lean more towards the imperative style and others lean more towards the functional style. I think object-oriented programming is still important. Many jobs that our students will see will require some understanding of object-oriented programming, so there needs to be a place for it in the curriculum. We have to see how the new 15-214 course will play out, and that's probably one of the last courses we're rolling out as part of the new curriculum design.
On the intro level, I think having the two courses we have, 110 and 112, works very well for the university population that we have to serve. Having one course try to serve the entire population was difficult, and I think we learned that. Splitting them off and having students learn some programming but more computational ideas in 110, whereas in 112 having them program well and understand how to develop software and learn a lot of the features of a particular language was a good design. I think that the results we're getting, both student feedback and actual performance in those courses, are showing that.
How the new curriculum is preparing students for the upper level courses as opposed to the old curriculum? As we say here in America, the jury is still out on that one. I'm hoping as Assistant Dean, we can measure that more effectively in the next couple years. We haven't done a lot of full measurements of that yet. We're getting informal ones from professors, but it's hard to tell because we get a mixture of students from the old program and the new program in the upper level courses now. There's material upper level professors have to teach, even though it might have been taught in one of the lower level courses, mainly because they don't have everyone on the same page to go forward, so we have to see how that plays out. I'm hoping that as I start as Assistant Dean, I'll work with Klaus Sutner to see if we can do some formal measurements on how effective this is. If there are things that we need to change, we're open to revisiting the curriculum; it's not set in stone. We hope that it's going to be beneficial for the students for the long term, but we're certainly open to making adjustments if needed.
Are there any changes you plan to institute next year?
We always like to end interviews with some fun questions. What are some of your interests? For example, we see from your website that you really like cars, so what would you say is your favorite one?
Seriously, I never used to be interested in cars for some reason, but lately I just started getting interested in car design. I don't know what it was, and it's not like I work on cars, like I have a hotrod in the backyard. I don't do any of that, but I go to the Pittsburgh car show every year, and I'm always reading car magazines and analyzing the latest designs. Interestingly I don't drive a really souped-up exotic car. I drive a regular sedan because part of me is very practical, that's how I am. I love fancy cars, but I would never buy one myself. When I moved to Pittsburgh, I ended up getting, of all things, an Oldsmobile, which were going out of business at the time. GM was disbanding, so they had these special final edition cars, and I ended up buying one of them at the time because they were a good price. I got the car, then started reading books about cars, about Oldsmobile and its history, and that's when I started getting the car bug. I said, "Wow, I kind of like car history." It's just something I follow and I wouldn't call it a hobby per say because I don't really work on cars. I guess when I got that Oldsmobile I started paying attention to cars and design more.
I also like to do home improvement projects and watch HGTV a lot more than a computer scientist should. Of course, my projects never turn out as wonderful as they do on T.V. My projects are more like the bloopers they edit out. I go to Home Depot so often to fix things I mess up, that they should name an aisle after me.
Your website also reveals that you have a couple of favorite T.V. shows, anywhere from "The Simpsons" to "The Big Bang Theory." If you could be any character from television, who would it be and why?
I think if I had to be any character in a T.V. show, I'd be Jim Phelps from "Mission: Impossible" (the TV series, not the movie). I love how he was able to get the bad guys to destroy their own plans by playing with their minds. And he always had a snappy line to end each adventure.
And to end, what is your favorite quote?