July 9, 2008

Interview with Eugene Wallingford of Knowing and Doing

Welcome to the latest installment in my occasional series of interviews with people in the scitech world. This time around the subject is Eugene Wallingford, Head of the Computer Science Department at University of Northern Iowa and author of the blog Knowing and Doing. I've been following Knowing and Doing for most of the four years it's been running (Happy Blogiversary, Eugene!) and I've always been impressed by Eugene's insights into the world of computer science, especially from the educational viewpoint. Since it's been quite a while since I interviewed a CS faculty member, I thought it would be a perfect opportunity to see what Eugene thinks about some of the important issues in the field today. I think there's some food for thought in the interview for librarians supporting CS programs and students.

Thanks to Eugene for his thoughtful responses. Enjoy!


Q0. Hi, Eugene, please tell us about yourself, your career path and how you got to be the Head of the Computer Science Department at University of Northern Iowa.

Thanks, John, for asking me for an interview. I am honored to share a few thoughts with your readers.

From the time I was seven or eight, I wanted to be an architect. All of my career planning in school aimed that direction. Academically, I liked everything and so had a full load of math, science, literature, history, and social science.

I started college as an architecture major. While I liked it just fine, something was missing. Somehow, I was drawn toward computer science. I ended up double majoring in CS and accounting, but CS was my passion, especially artificial intelligence. I went on to grad school, specializing in knowledge-based systems. My dissertation focused on the interaction between memory and domain knowledge.

A little over three years ago, we were nearing the end of an interim department head's term. I'd never given much thought to being an administrator, but I saw many ways in which we could improve and thought for a moment that I might be the right person to help us get there. I am now ending my first 3-year term and have agreed to continue on for three more years. Looking back, I see some improvements but, frankly, had hoped to have accomplished more. This is a tough job. It lets me be a computer scientist in some ways but takes time away from doing all of the CS I love. I'm committed to helping us move forward for another term, and then we'll see.


Q1. Do you have a theory of blogging? What got you started blogging and what do you get out of it and what keeps you going? I'm sure all your faithful readers are hoping you can add comments to your blog at some point.

I don't think I have a theory of blogging. I first started because I had things I wanted to say. Every computer I had ever owned was littered with little essays, reviews, and conference notes that no one had ever seen. I'd been reading several blogs for several years and thought that starting a blog was a way to make some of my writing more permanent. If others found it worth reading, all the better.

My blog consists mostly of short pieces connected to my professional life as a computer scientist and faculty member. I make connections among things I read, write, see, and do. My one personal indulgence in writing is running, and I've written quite a bit about my experiences training for marathons. Some of my more interesting pieces in this category have made connections from training and running to software development.

Occasionally, I write something that is purely personal, or something that made me smile and laugh. I don't think anyone really wants to hear about what I eat for meals or who I am voting for in elections, so my blog has never veered in that direction. But readers get to know me as a professional person, and I do think that knowing something about the person on the fringes adds depth to how they read my other pieces.

Comments... Yes, I understand. When I first started blogging -- four years ago today (July 9)! -- I planned to add comments. The tool I use to blog is very simple and didn't make that easy. I've just never gotten around to it.

I read many blogs in which comments make a valuable contribution to the message. In others, they add little. There are many ways in which I would relish an ongoing conversation with readers. Adding comments is still on my wish list.


Q2. You blog a lot about teaching computer science. Do you have a teaching philosophy? How do you think teaching computer science differs from teaching other disciplines?

There was a thread recently on the SIGCSE mailing list about teaching philosophies. Many schools ask job applicants for a statement of teaching philosophy, and some folks think that's silly. How could new Ph.D.s have teaching philosophies when they have spent little or no time in a classroom?

I've been on the CS faculty for sixteen years now, and I can't say that I have a coherent, pat teaching philosophy even now. Were I to apply for a new job, I would have to do what those new Ph.D.s have to do: scour my mind for bits of truth that reflect how I teach and how I think about learning, and then mold them into an essay that captures something coherent about me on this day.

My blog exposes some of these bits of truth as I write about my experiences in the classroom. It will be a wonderful resource the next time I have to write a statement of philosophy.

Thinking back to all I've written in the last few years, I can see some themes. Learning is more important than teaching. Students learn when they do. Students learn when they want to do. What I can do as a teacher is to create an environment where students come into contact with cool and powerful ideas. I can organize ideas, skills, and tools so that students encounter them in a way that might spur their desire. Ask students to write programs and solve problems. Ask them to think about how and why. Ask them to go deep in an area so that they learn its richness and not its surface chemistry. Oh, and show as often as I can and in as many ways as I can how much I love computer science. Show what I learn.

That paragraph would get me started on a philosophy statement.

Computer science is an interesting mix of mathematics and programs. Most people don't realize that it is a creative discipline -- a discipline in which making things is paramount. In that sense, we can learn a lot from how writers and artists (and architects!) learn their craft.


Q3. Another of your favourite themes is how computing is infiltrating all the other sciences -- in other words we're getting to the point where it's computational everything. What got you interested in that trend and where do you see it going?

This is not as new as it might seem. Computer science has always been about applications: creating solutions to real problems in the world. The discipline goes through spurts in which it looks inward, but the focus always turns back out. When I was in college in the first half of the 1980s, there was a lot of talk about end-user programming, and even then that wasn't new. Alan Kay has been talking for forty years about computing as a new medium for expressing ideas, a medium for every person. Before that, pioneers such as Marvin Minsky said similar things.

What's happening now is a confluence of several developments. Computing power has continued to grow at a remarkable pace. Our ability to gather and store data has, too. We realize that there will probably never be enough "computer scientists" to solve all of these problems ourselves, and how could we anyway? Biologists know more biology than I ever will; likewise for economics and astronomy and geography and most other disciplines. We are reaching a point where the time is right to fulfill the vision of computing as medium for expressing and testing ideas, and that will require we help everyone use the medium effectively.


Q4. Enrollment has been an issue in the CS community for a while now. Are you happy with the current levels of enrollment? What do you think are some of the ways to get enough students of all kinds interested in CS and willing to consider it as a major? How can we improve the diversity of the students willing to give CS a shot?

We've started to see a small bounce in our enrollments, and I think this trend will continue for a while. I'm not sure that we will ever see the large growth we saw in the 1980s and 1990s, but that's okay -- as long as we recognize our need to broaden the base of people who can use computing in their own disciplines.

Figuring out how to get more students to major in CS or to learn how to use computing in their own disciplines is not easy. If I knew the answer, my school would have a lot more majors and students! There are a lot of things we can do: tell our story better; help more people to understand what computing is and what we do; introduce our ideas to more students earlier in school. One thing a lot of us have noticed over the years is that most people learn about CS as something "hard", a discipline that requires special wiring in the brain. While it's probably true that not everyone is suited to do academic research in CS, I think that everyone can learn to use computing as a medium for expressing ideas. If we can find good ways to introduce computing in that way across the population, the number of majors and the number of interested non-majors will take care of themselves.


Q5. Could you tell us a little about your research interests?

As I mentioned in my history earlier, I started in the area of artificial intelligence, a field in which computer scientists work with many others in an effort to make computers do ever more impressive tasks. Most of my work was in Knowledge-based systems, a sub-area that focused on how systems with deep knowledge of a class of problems can organize, access, and use the knowledge to solve those problems. In the mid-1990s, I began to move in the direction of intelligent tutoring systems, which are programs that help people to learn. This was probably a natural evolution for me, given my interest in how my students and I learn new areas of expertise.

In the late 1990s, I found myself drifting toward work in the area of software design and development, which led me more toward programming languages. Notions of design and language were central to my interest in AI, but I found the concreteness of supporting software developers attractive.

As a department head, I don't have much time for research. When I do have time, I work on how to provide support to programmers as they write, modify, and manipulate code. Of particular interest is how to support refactoring (changes to programs that preserve their intended behavior but modify their structure) in dynamic languages, which do not provide all of the cues we need to ensure that a modification preserves behavior.


Q6. Being a librarian, you know I have to ask what journals, conferences, etc., you find most helpful. I'm also curious about any search engines you might use, be they commercial ones like INSPEC, Web of Science, Scopus or "free" ones like CiteSeer, Google, or Google Scholar? Or anything I haven't even mentioned.

Google. That's the answer for so many things! It's my primary tool for search to find new articles. It links me to more focused technical tools like CiteSeer and the ACM Digital Library, as needed. But so many articles are now available directly on the web from their authors that the journals themselves become more like convenient packaging devices than essential units themselves. It's akin to the change in the music industry from the album to the single. Singles fell out of favor for a while, but the advent of iTunes and other music services have really changed how most people come into contact with their music today.

I don't read many journals cover to cover anymore. I do subscribe to the Communications of the ACM and am looking forward to its new format. I also follow the bulletins of several ACM special interest groups (programming languages, AI, and education).


Q7. Again, being a librarian, I'm also curious about any CS-related books you've read that you've found useful or inspiring, either recently or in your formative years.

A few years back, before I had a blog, I created a webpage for sharing books with colleagues and students:

http://www.cs.uni.edu/~wallingf/miscellaneous/recommended-reading.html


I haven't added to that list lately, but it lists most of the CS books I'd recommend yet today, including Abelson and Sussman's The Structure and Interpretation of Computer Programs, Peter Norvig's Paradigms of Artificial Intelligence Programming, and the Gang of Four's Design Patterns. It also lists books that are not technically about CS but which might change how someone thinks about computing and software, such as Stewart Brand's How Buildings Learn -- a marvelous book!

One glaring omission from this page are the works of Christopher Alexander, the inspiration for the idea of software patterns. Most everyone recommends The Timeless Way of Buiding and A Pattern Language, and I concur. But I also strongly recommend The Oregon Experiment, which describes Alexander's experience implementing his ideas on a college campus. This is a thin little volume that I found rewarding.

Most of my CS-specific reading lately has been on Ruby.


Q8. I find it interesting that computer science students still seem to be relatively high users of print books and I was wondering about your take on that phenomenon. Is it still the same or is it changing?

Philip Greenspun has described CS as pre-paradigmatic in Thomas Kuhn's sense, which means that books play an important role in how new ideas are shared and disseminated. Computing has always been rich in print books, from timeless works down to skills books with a shelf life limited by the rapid change in technology. I know many publishers are thinking about ways the market might shift into electronic versions, and more and more books are available on-line now, sometimes in their first run.

A lot of my students are reading books on-line more now than in print. A recent favorite is Why's (Poignant) Guide to Ruby, available at http://poignantguide.net/ruby/. To my knowledge, this book is available only on the web and not in print. I'm curious to see how this trend develops. My guess is that individual authors will create most of the ideas that change how we read their works, which will cascade down to how we publish.

This comes back in to some ways to blogs, which seems like a good way to close the circle on this interview. One thing I love about my blog in comparison to the essays and comments I used to write in regular text files is the ability to link directly to other works. When I drop a short piece onto my blog, it often takes its place within a web of related writings and software pages. The connections among these works adds value to what I write by giving my readers a way to find and explore related work. That is so much more convenient than a list of references at the end, even if it is also a whole lot messier.

Thanks again for asking me to contribute to your interview series.

3 comments:

Jane said...

Thanks for a very interesting interview, John! And thanks, Eugene--I hope you continue to impart your CS/teaching/running wisdom for a long time!

John Dupuis said...

Hi Jane! You're welcome.

Eugene Wallingford said...

Thanks for the kind words, Jane. I was glad to see your comment because it reminded me that I had lost your feed from my newsreader. That problem is now solved!