Interview by CSD undergraduates: Sana Yousuf and
Renee Nicole Rivas
What motivated you to switch your role from teacher to advisor/teacher?
They asked me! I’ve been teaching here for ten years, as well as being an undergraduate here myself in the 70s, so it made sense. Jim has been doing this job since the first year of the program, and was doing an excellent job, but he decided he wanted to step aside. I think the department wanted someone who was senior, who had been here for a while, and was familiar with teaching freshmen. As an aside, the intro group tends to serve everybody but computer science undergrads, so we don’t really get to know them as well as we know the undergrads from MCS and CIT, who we do see in our classes.
I had been teaching 15-200 with Mark for a few years and interacting with SCS freshmen there, so I think it was a natural progression to go into an advising role. I still teach many SCS freshman in 15-200, but I also get to be their advisor. Actually that’s a two edged sword, on the upside, I get to know these advisees really, really well, but on the downside, sometimes the advisor/teacher roles clash: if students aren’t doing well in 15-200, it would be natural for them to talk to their advisor, but I’m also their teacher in that class. In fact, I’m trying to make a hat that has two brims: it will say teacher on one and advisor on the other, so I can turn it for whichever role I’m currently playing.
Now that you’ve been balancing the positions for almost 2 semesters, are there any changes you plan to institute next year?
I inherited a system that runs very well. We are trying to get some of the pre-registration and survey materials online, rather than mail paper back and forth. The students (as well as the Dean in the Mellon College of Science, for planning purposes) want to register over the summer, and to not wait until academic day register. Although academic day registration works well, I think the students would feel better if they could get on the registration system and learn to operate it before arriving at Carnegie Mellon.
I know that on academic day, freshmen get into discussions with other students (freshmen and upperclassmen), and change their minds about registration. So, I don’t want to eliminate registration on academic day completely, but it’s going to have a more minor role. It seems Win-Win: the students who don’t want to change their schedule won’t have to do anything; the students who want to change their schedule will just have to update a few things -and they will already know how to use the registration system. This approach will also improve spring semester registration, because students will have already gone through that cycle once.
But what will happen now that Academic day is not going to be dominated up by registration? I’m still thinking about what we are going to do. My first thought was to show “The Paper Chase”, my favorite movie about education. It’s a movie about students in their first year at Harvard Law School. Although this group is not the same as Carnegie Mellon SCS freshman, both are high achieving students, and the movie brings up many interesting issues that transcend the differences.
What is your favorite part about your job?
Being with the students: they are all very interesting and their personalities and intellectual issues vary ever year. I also like thinking about teaching: how I can better present the material; what is a better example to illustrate a point; how can I draw a connection between two seemingly different topics, either to unify them or show them as complimentary ideas. Although the material doesn’t change a tremendous amount from semester to semester, sometimes the way I present it does. It is interesting to think deeply about the pedagogic issues of what you’re teaching, not just what you should be teaching, but in what sequence, and what are the ways to present and interconnect the ideas.
Have you always wanted to be a teacher?
No. I grew up at the dawn of the space age, and I first wanted to do something with rockets (design them, ride them, etc.). I got interested in doing calculation relating to rocketry and that’s how I got into computing. During my sophomore year in high school my interest in computing surpassed by interest in “rocketry”, and I haven’t looked back. I knew that I wanted to get a CS degree and then go to graduate school. Almost by accident I spent a year teaching at Carnegie Mellon after graduating, but before going to graduate school. I was a head TA for the beginning programming classes. At that time Raj Reddy taught the main lecture first semester, and Mike Shamos, who had just arrived at Carnegie Mellon, taught the second semester. So I got to apprentice with them. I really enjoyed leading my sections. When I went to graduate school at Stanford -because I had some background, maybe not as much as I told them, but because they knew I had been teaching before- they put me in charge of lecturing for one of the introductory programming courses there. That’s really when thought about teaching, not research, as my life’s calling.
Almost every CS major has heard of Karel, but few know that you developed it. What inspired you to create and bring Karel into the classroom?
While I was teaching at Stanford, I was looking for a way to “jump start” people into what I thought was the interesting parts of programming. The Stanford approach to structured programming was to put a lot of effort on structured decomposition and top down design early, most of it dealing with procedures and control structures, with less emphasis on data. I was looking for a way to allow students to be asked to solve some interesting problems, whose solution would involve procedures containing complicated control structures –programs that would have interesting bugs, not calculation bugs, but logic bugs. I was familiar with the work on Logo at MIT, and I wanted a similar way to use a robot/turtle to transition to Pascal (the language I taught at Stanford).
I really wanted to keep this overview short, just a week or two (Stanford is on the quarter system, with each quarter only about 10 weeks long). I spent a long time writing the book to make it as short as I could possibly make it. I followed a comment attributed to Pascal, “If I would have had longer, I would have written a shorter letter”.
What is the more recent history of Karel?
In the 80s, Mark Stehlik and Jim Roberts wrote a second edition to the book (I felt that I already said everything I wanted to say, within in the constraint of 100 pages). Mark and Jim wrote the book to be used with the Karel Genie (a special IDE for Karel), being developed at Carnegie Mellon by Phil Miller, Dave Garland, and lots of others. They wanted a more formal way to use graphic design tools to teach top down programming. These tools were integrated into the Karel Genie. In the 1990s Joe Bergen did an object oriented version called Karel++. This was about the time introductory courses started moving to C++. It was a fairly straightforward translation, with Karel being the object that received messages, etc. Then Joe went on to do a book called KarelJRobot, which attempted to teach very advanced ideas in OOP from the very beginning, also using Karel. It had multiple robots who could send messages to each other. So in fact, there are a couple of generations of Karel books. Although I’ve spent a lot of time reviewing these books, I’ve pretty much been hands-off in terms of their actual content. Right now I’m working on a similar microworld for doing artificial life simulations in Java: lots of agent and environment objects to interact.
Over the past few years, Carnegie Mellon has shifted its emphases from having prior CS experience to demonstrating potential, in the admission criteria. From a teacher’s viewpoint, and now as an advisor, have you noticed any differences in the students, such as in approach, incentive, confidence, ability, or other areas?
Most of the students I teach in 15-200 in the fall have programmed for a few years in high school. In the spring semester, I teach students who have taken only 15-100 here. Some of these students are absolutely at the top of their game, while others are still struggling with new ideas (after programming for just one semester). I think it’s more difficult and challenging for those students who really don’t have a lot of programming when they arrive, but it is also more rewarding: they learn a tremendous amount in 15-100/15-200. By the time they get to end of their sophomore year, their grasp of programming is often on par with the students who spent years programming before arriving at Carnegie Mellon.
When I went to graduate school at Stanford (coming from Carnegie Mellon, which even though it didn’t have a computer science school, had a lot of computer science courses –I had even taken graduate courses) I remember thinking “Most of the other students haven’t had my background.” and I was shocked that after about a year and half, everyone had caught up. They were all very smart people: they didn’t have the breadth of the training that I had in CS -most of them had done something in mathematics, engineering, or sciences- but they caught on very quickly. I think for undergraduates it maybe takes a little bit longer, but I think it certainly happens quickly, and gives them a chance in their last two years to perform as well on courses related to programming.
What is the most important quality that any student, experience or not, can bring to Carnegie Mellon?
The ability to be inquisitive and do hard work. Yes, there’s a certain amount of intelligence that you need, but typically all incoming freshman have it. I may be selling many of them short, but I think that because of their raw intellect they often didn’t have to work hard to get top grades in high school. Are there some students who are so bright that they don’t even have to work hard at Carnegie Mellon? Very few. Of course there are a billion interesting and new things to do at Carnegie Mellon, so even getting focused is a hard thing to do. To buckle down and work means that you have to ignore many interesting things that are going on around campus. Students shouldn’t ignore all those other things –just most of them. So getting balance is difficult.
I understand that you attended Carnegie Mellon as an undergrad… what did you study? What did you do around campus? Did you like it? How is Carnegie Mellon similar and also different from when you were a student here?
I did a degree in math. The CS major is just a dozen years old. Before that, there was a joint program in math, with a CS minor. Before that (my time at Carnegie Mellon), there was just a math degree, but there were still were lots of CS courses to take; if you ran out of undergrad courses, you could take grad course (Carnegie Mellon’s graduate CS program has been around since the 60s and was booming).
My perceptions are that back in the 70s, Carnegie Mellon was more a local, blue collar school. I remember students in the dorms who had fathers who were working in the mills. Having their kids come to Carnegie Mellon and become engineers was a big step up in these families. Today Carnegie Mellon is an internationally known institution. The parents of most students that I know are white collar professionals.
When I applied to Carnegie Mellon, computer science was still a very young and much smaller discipline. Even then, Carnegie Mellon’s CS department was one of the top half-dozen top in the country. There were fewer CS luminaries back then, so it was easier to know about then. I knew about Alan Perlis, who was one of the founders of the department -the first chairman in fact- and Allen Newell and Herb Simon, who helped found artificial intelligence. I think computing is so big on the global scale now, it is harder from high school students to get their heads around it. When I surveyed last year’s freshman about what famous names in CS they knew, mostly I heard about Bill Gates; they all know Bill Gates, but few mentioned the real founders of the field, or current luminaries.
Does computer science run in the family?
No, it runs nowhere in the family. My dad was a businessman, one brother took over his business, another plays guitar professionally, and my sister is a doctor. My wife is a department chair in the Nursing School at Pitt, and my kids mostly play sports.
How do you balance work, family, about 150 adopted 18 year olds?
Carefully. My kids are now both in high school so they are pretty independent. They can easily be off by their own. But I also realize that they will be going to college soon, and I want to enjoy the last few years I have with them while they are still living at home.
I think the key to balancing everything is a certain kind of flexibility, some of which is inherent in the job and some of which I’ve engineered. I live within walking distance of Carnegie Mellon (a big goal when I moved back to Pittsburgh). Because I live so close, I can walk to work, and it’s trivial to jump in my car (or even on a bike) and be here in few minutes. That’s handy if I forget something at work, need to meet with students, etc. I can always be here in a flash. I also do a lot work at home (and even do online office hours many evenings using IM from home). So I have the flexibility to balance work and family. What I don’t finish at school I can bring home. So if my kids need help with their homework, or I need to cook a meal or do laundry, I can interweave those activities with working at home.
As an aside, I walk to work every day, past Donner hall, where I lived as an undergraduate. I feel like the opposite of Dorian Gray, I’m getting older and older, but whenever I look around Donner, or in my classrooms, the students stay the same age. They’ve been that same age since I was here in the 70s.
Do you still see yourself as an advisor in 5 years?
I think so, because I think its going to take me that long to get really good at this job. <laughs> The department is changing the way advising is done. The first shift was me taking over freshman advising from Jim. Now, Scott McElfresh is taking over some of Mark’s advising duties. I think SCS is making an explicit statement that we want to get more faculty involved in advising. I think it’s a good thing to train a lot people so that we can move in and out of these job as necessary –distribute the knowledge.
Also, one of my goals in moving into this job was to make it easier for the next person. Jim started in this job, which grew and grew. There is a tremendous amount of useful information in his brain, and he is helping me make the transition, but I want to simplify the next transition, so my successor will have an easier time. I really want to codify all the stuff I am learning in some kind of document.
Just about two weeks ago I moved all the advising documents over to Scott’s office. And now I don’t send them emails, he does. And he’s their official advisor. So, I’m feeling isolated. I’m hoping these students will continue to come by and talk to me. I’ve built up a few deeper relationships, both through advising and 15-200, but officially I’m not connected anymore. That’s tough.
After I do this job for the last year, I would love to take my last freshman class and advise them through their remaining three years, until they graduate (what Scott is doing now). I hope I’ll have that opportunity.
Will you stay with Carnegie Mellon and in Pittsburgh forever?
I’m very happy in my job and in Pittsburgh. For years I said my only complaint was not being able to teach/interact more closely with CS undergraduates (because most lecturers teach students in other majors). Since I’ve been teaching the majors, and now that I am an advisor, those few problems have evaporated. My wife and I met and started our family in Seattle, and were there for 10 years before moving here. I think Pittsburgh is a wonderful place to live and raise a family; to me it’s a right-sized city. I grew up in the Midwest, in Chicago, and I see many similar values. My wife grew up in California and is much more a West coast person. She walks to school as well, sometimes because she wants to and sometimes because she cannot drive confidently on snow! I mean if it snows, even a light dusting, that’s it. She will not drive her car. I think she would like to retire on the West coast. But right now we are happy in Pittsburgh and our respective jobs. Our kids are happy too: they have a huge number of friends. It will be interesting to see what they do after they graduate college, which will have some bearing on where we retire.
What changes do you think the CS program will undergo by that time (5 years)?
Describing the past is a lot easier than describing the future. I think other departments in SCS, not just CS, are gong to start offering undergraduate degrees: e.g., degrees in robotics, human/computer interaction, maybe even in machine learning. These areas have gone from pure research areas to areas that have broad fundamentals, broad enough to support a major.
Computers don’t seem to be speeding up as fast as they used to (Moore’s “law” is harder to obey). For year and years, as long as I’ve been in the discipline, computers have regularly gotten faster, and that has solved certain problems automatically –and created expectations that aren’t now being met. I’m not sure what effect this leveling-off of computer speed will have. Topics like synthesizing and analyzing algorithms are likely to become more important. Maybe computers are going to go a completely different way, and all of sudden people will be using quantum computers to get things done, I don’t know.
The discipline is maturing. There is more and more unexplored territory, but it is more at the fringes (compared to when I was at school). I knew a couple faculty members who didn’t have PhD’s, but had full professorships. These were really smart people, but I think what they did will be harder and harder to do.
What’s your favorite day of the week..why?
Wednesday. Its still early enough in the week that I feel invigorated from the last weekend but its late enough in the week that I can see the new weekend approaching. And, it’s one of the days I teach classes.
On average, how many times per hour do you check your email? …Do you consider that normal?
When I’m online, I check my email at least every 10-15 minutes (unless I’m heavily into some activity). I think that is a lot. Recently I’ve started doing some of office hours in the evening, online using Instant Messaging from my home. So, I now have one office hour Sunday through Thursday from home. That’s worked out very well, since I’m typically working on my computer during the evenings anyway, and I’ve found IM not so much of a distraction as I thought it would be. For questions requiring lots of quick interaction, this is much better than email. For example, students can even use IM to send me snippets of code, which I can drag and drop into my IDE to test. I’m actually looking forward to doing more stuff through instant messaging and less through email. Although, I’ve notice that when students send email, knowing they don’t have a live person at the other end of the line, they tend to think about what they are saying a bit more carefully and describe issues better; the result is that they often answer their own questions because they’ve thought more deeply about them. But when a student says “here’s a chunk of code and it doesn’t work” they don’t have to think very much in instant messaging.
What motivates you or cheers you up when you get frustrated?
Thinking of a clever way to explain something or writing a beautiful piece of code. I try to impart the students that there is certain aesthetics in the discipline and there are things that look beautiful and other things that work but don’t look so beautiful. So coming across some kind of beautiful snippet of code, beautiful idea, beautiful way to explain something; I think I smile at those time maybe more than anything else. That and when a student gets it. You know when you are explaining something and you can just see on their face that they are just treading water as hard as they can and then all of a sudden they can kind of say, “oh that’s connected to this” or “then this would be such and such”. I mean for teachers, those are the greatest moments possible.
Do you have a favorite quote?
I have a webpage that’s got hundreds of quotes on it, all of which I really like. I put quotes there only if I think they are clever, and have some intellectual content as well. And the best thing about having a web page of quotes is that you can quote yourself on it. So MY favorite quote is, “When debugging, novices insert corrective code; experts remove defective code.” It’s kind of like a Zen thing. If code is wrong, you don’t put more code in to fix it (you’ll likely be adding more errors), you take out the bad code. I think that is the right perspective on debugging. Sometimes, I can’t tell if I’m still a novice. <laughs>