Philip Guo had an interesting post on the Blog @ CACM titled Python is now the most popular introductory teaching language at top U.S. universities which summarizes his survey of the 39 top US PhD granting university CS departments. It’s interesting that Python now has a slight edge over Java in those universities. But what does that mean for high school CS? After all that is where I teach and where my current main interest resides.
Does it mean anything at all? There is a big difference between high school students and university students. Sure I have some students who could (and will) get into those top schools but a) most of my students will not and b) even those students are not up to college level work as freshmen or sophomores when I teach them their first programming course. What works at MIT may very well not work at the average high school.
The article doesn’t go into why universities chose Python (or what ever language they did teach) so it is hard to evaluate a need or even a reason to change at the high school level from that article. On the other hand I know that a lot of schools at all levels (middle school though university) are moving to Python. There are a lot of popular options in K-12 that do not show up at the university level.
Scratch is the only visual, blocks-based language that made this list. It's one of the most popular languages of this genre, which include related projects such as Alice, App Inventor, Etoys, Kodu, StarLogo, and TouchDevelop. The creators of these sorts of languages focus mostly on K-12 education, which might explain why they haven't gotten as much adoption at the university level.
So even though they are not used by universities they are used at the earlier years. That makes sense because of the age, maturity and experience level of younger students. Just because universities jump to a new first programming language doesn’t mean that high schools should jump the same way.
Now I know that the AP CS A course tends to follow universities. The exam followed from PASCAL to C++ to Java in its history. Will it follow to Python? Quite possibly if the justification is there. Honestly though I think that if AP CS A is a high school students first experience with programming that is not a good thing. The article mentions the importance of a first impression of computer science.
Because the choice of what language to teach first reflects the pedagogical philosophy of each department and influences many students' first impressions of computer science. The languages chosen by top U.S. departments could indicate broader trends in computer science education, since those are often trendsetters for the rest of the educational community.
I believe that we have to be a bit gentler at the high school level than the university can be. That is why I don’t automatically follow the lead of the “top universities.” Still I think II ‘d like to see my students have some exposure to Python before they leave high school. Maybe as the first language, maybe as a second or third. I have to learn more about the language and teaching with it first. More learning for my summer I guess.
What do you think about Python? Are you using it to teach in high school and if so what advantages do you see with it?