Jeff Elkner is a computer programming teacher at Yorktown High School in Arlington, Virginia, USA. I met Jeff at the Python Conference in January, 2000. I was inspired by his talk, entitled Using Python in a High School Computer Science Program because it demonstrated that a high school teacher had begun delivering on the promise of Python as a first teaching language. He brought three of his high school students to the conference with him to discuss the projects they were working on.

Later, at a Birds of a Feather session about the future of Python as a teaching language for middle school and high school students, Jeff was a lone, practical representative of classroom experience among a sea of theorists, professional programmers, computer science majors and (gasp!) even a book editor. He spoke of ways that teachers could use the methods of Open Source development to create and share teaching materials that could form the basis of a new programming curriculum based on Python.


Want to learn more about Python and other open source technologies? Check out the O'Reilly Open Source Convention, July 23-27, 2001 in San Diego, California.

I felt strongly that I had to follow up on Jeff's thoughts and asked to interview him and a couple of his students. I conducted the following interview in February with Jeff and two of his Yorktown High students, Lex Berezhny and Virginia Hafer. Lex is a junior intending to take the second year of computer science next year. He was one of the students that joined Jeff at the Python Conference. Virginia is a senior; this class will be her only high school programming course.

Frank:
Jeff, what led you to use Python in your first-year computer programming class?

Jeff:
We had switched to teaching C++, from Pascal, when the College Board switched to C++ for the AP exam. I was having a great deal of difficulty with C++. I was turning off 50 percent of my students. I found myself fighting with the syntax and I was really frustrated trying to explain clearly what computer science was about while using a language that seemed to get in the way.

So I went looking for something else. At that same time, there was a high school Linux User's Group discussion about which language was best for teaching programming in a high school. Someone on that list suggested Python, and over half of the people on the list jumped in and concurred that it would be the ideal choice for a first language. That's what led me to investigate it.

Frank:
I'm surprised that there was that much awareness of a scripting language like Python. Do you think the awareness stems from the fact that your high school is located near Washington D.C., the home of Guido van Rossum, Python's creator, and the Center for National Research Initiatives (Guido's employer and the sponsor of much Python development)? Or, do you think there are that many teachers across the country who are aware of Python?

Jeff:
Most of the participants in the discussion aren't teachers; they are students. This mailing list is for a high school Linux users' group. Python comes distributed with Red Hat and most other Linux distributions. So I think that that crowd is a little more aware of what's going on with Python than most other folks would be.


Meet Guido van Rossum, creator of the Python programming language, in a wide-ranging 1999 interview with O'Reilly editor in chief Frank Willison. Guido talks about the creation and future of Python, how it fits with other languages, and about his innovative Computer Programming for Everybody project.

Frank:
It seems to me that it's not unusual for students to lead their computer science teachers into areas where the teachers wouldn't ordinarily go. Linux is certainly one of those areas. How were you able to persuade your department and administration to let you use this non-standard language?

Jeff:
I am very fortunate to have a department head who is supportive of things like this. She is interested in innovation and in trying new things. I asked permission from her to pilot it here at our high school, and she readily gave me that permission. So we're just using it at Yorktown now. I think it's working out really well, and I'm hoping that we'll be able to extend it into other schools in the county in the future.

Frank:
Are there other instructors teaching the same course with C++?

Jeff:
Yes.

Frank:
So you will then have the ability to compare experiences. Are you doing any sort of official evaluation, or is evaluation mostly anecdotal?

Jeff:
It's definitely anecdotal at this point. I'm hoping to talk to Guido about establishing some metrics as part of his Computer Programming for Everyone initiative. One useful measure, in a couple of years, will be the success of students in the AP course because they'll all be taking the AP exam.

Frank:
As I recall from your presentation at the Python Conference, everyone who goes on to the second year will be taking C++.

Jeff:
Correct.

Frank:
It will be a very interesting measure, then, because what you're really testing is whether Python or C++ itself is a better introduction to C++.

Jeff:
Right. I think Python is better.

Frank:
I'll be very happy if that turns out to be the case. I'd like to ask Lex and Virginia a couple of questions. How do you feel about Python? I know you can't compare it to anything else, but did you find over the year that you were able to learn programming pretty well? And did you enjoy computer science?

Lex:
I have programmed with several other languages. I started with PHP, which is a Web scripting language. Then I started playing around with Perl, and soon after that, I was introduced to Python. At first, I didn't really like Python because I thought it was too simple. But when I rewrote several Perl programs in Python, I saw how I could write better and more readable code. I also noticed how much more concise Python code is and how quickly I could write large programs.

Frank:
It's interesting that you didn't start with Visual Basic or C or any supported standard language, but with two other Open Source scripting environments. I would think that you followed an unusual path, in terms of what a teacher or a book editor would suggest. But I wouldn't be surprised if your experience is more common for people who are comfortable looking around on the Web. What drew you to PHP?

Lex:
I needed a simple scripting language.

Frank:
But how did you come across PHP? PHP is a language that doesn't even have any good books yet.

Lex:
I wanted to build a dynamic website, and I signed up with a service provider that offered PHP. They also had Perl and a few other languages, but I thought PHP would be the easiest to learn. They also had a lot of example PHP scripts. I don't think there's any other language that has so many, so I started learning PHP from those examples.

Frank:
Virginia, how did you get started?

Virginia:
I began programming when I started the class this year.

Frank:
So you've been programming now for about half an academic year. What interesting tasks are you able to take on with half a year of Python?

Virginia:
I've been working on a program to list all the wrestlers on the Yorktown team and maintain a record of their matches. I want it to do some of the things which Excel does in Windows in terms of maintaining and sorting lists.

Frank:
What led you to take computer science in your senior year?

Virginia:
I hadn't had the opportunity before my senior year because my schedule was full. Also, my dad really pushed computer science because he thought it would be good for me.

Frank:
Jeff, what aspects of computer science are you able to teach more clearly now because of Python?

Jeff:
It's still a little early to tell, but we've completed in half a year what we used to do in a year. I have been able to teach procedural programming techniques, introduce students to functions, and get them to use them with a good degree of facility. We're going to be starting object-oriented programming in the next couple of weeks.

Virginia is working with a group of students in class who are writing a Pokemon game program. That idea came out of the discussion at the Python conference. It's an interesting problem. It's large enough to be pretty exciting, I think, but still doable. I don't think we could have done anything like that in any other language.

Frank:
So, the fact that Python is fairly abstract and hides a lot of the details allows people to get real stuff done, instead of getting bogged down in implementation?

Jeff:
Absolutely. For example, string handling is a nightmare in C++, while reading a string and writing it out to file in Python is such a pleasure. I'm having so much fun with it. It's certainly making programming a lot more fun to teach.

Frank:
I'm interested that there are students like Virginia who are getting one year of computer science, and will not, through your school, get instruction in C++. Are you confident, Jeff, that one year of Python programming will be worthwhile to them?

Jeff:
I think it will be worthwhile because Virginia is considering a number of possible futures. For example, she might be a physics major. If she wants to script an application quickly, using Python will be far more productive than C++. It is easier to use, so she can get real work done. If she doesn't go on to major in computer science, she has a tool that's useful to her.

Frank:
It does seem like there were a lot of scientists at the Python Conference.

Jeff:
I'm going to introduce my students to C in the last month of the year and talk a little bit about gluing the languages together. So Virginia will get an introduction to C as well.

Frank:
That's good. Lex, are you going on to take the second year of programming?

Lex:
Yes.

Frank:
Is Python a language that you'll continue to use even after learning C++?

Lex:
Yes. For example, we're writing a large program called Student Portfolio [summarized by Lex as an appendix to Jeff's Python Conference proceedings], and using Python over C++ is a great advantage. I will always use Python for web applications.

Frank:
I recall you mentioning that program at the Python Conference. Is it going along okay?

Lex:
Yes, we have two programmers working on it, Jonah Cohen and myself.

Frank:
Is that a database application?

Lex:
Yes. We're using PostgreSQL and the PyGresql module. Python is a great glue language.

Frank:
What about parents, particularly parents who want their child to take the AP test? Have you gotten any reactions from them?

Virginia:
My brother took computer science from Mr. Elkner a couple years ago, and my parents both programmed, so they are pretty familiar with the Yorktown curriculum. When I went home after the first day of school and told them that I was learning to program in Python, they were concerned as to how useful Python would be compared to C++. But they've seen some of the stuff I do. After all, I've got a web page up, and they don't. So they're fine with it. They figure everything is all right as long as I am learning to program, and I am. I'm currently doing stuff that they never did when they programmed in FORTRAN.

Frank:
Jeff, have you heard from concerned parents?

Jeff:
On Back to School Night, I announced quite loudly that I was going to be using Python this year, and nobody objected. Actually, I'm pleasantly surprised that, so far, I have not heard any complaints.

Frank:
Jeff, one of the issues that you talked about at the Python Conference was the need for teaching materials. Can you talk a little bit about that? What does Python need in order to be useful to teachers who are now using standard languages like Pascal and C++?

Jeff:
They need textbooks geared toward high school students, combined with sample lesson plans and work sheets--the types of resource materials that exist for all of the other programs that we have at the high school.

Frank:
I recall that you are adapting a book for your class's use.

Jeff:
Yes. I'm adapting How to Think Like a Computer Scientist, by Allen Downey.

Frank:
Is he allowing you to adapt his book?

Jeff:
Oh yes. In fact, he's even encouraging me to work on it. It's an open document. It currently uses C++, but I'm adapting it for Python.

I think we'll be able to overcome the shortage of Python teaching materials in a very short period of time because we will be leveraging the spirit of the Open Source software movement. I've already found, coming out of the Python Conference, a number of people willing to develop and send me material. Python programmers are used to sharing things, so when they start to create materials, the culture will encourage them to work together.

Frank:
So we can do a sort of Open Source development of educational materials to support an Open Source language?

Jeff:
I think that's what we need.

Interested in Python books published by O'Reilly? Check out: