Python is now used by 8 of the top 10 US computer science departments in their introductory courses at undergraduate level. This trend is also reflected in the preponderance of MOOCs teaching Python to beginners.
Having seen usage of his Python educational tool "skyrocketed due to the popularity of the language", Guo set out to discover how many of the top-ranked U.S. computer science departments now use Python to teach their introductory courses. In doing so he also ended up recording the occurrence of other popular teaching languages.
To select which universities to include he used the Best Computer Science Grad Schools (2014) list from US News and stopped at 39 because "there was an 8-way tie for 40, so the differentiating signal is weak by that point." For each university he looked for the equivalent of CS1 (first required course for CS majors) and CS0 (introductory programming for either non-majors or those who need extra preparation before CS1.)
In his Results chart, which covers the seven most common languages offered, the bar heights add up to more than 39 since many schools offer both CS0 and CS1:
Abstracting the Top 10 Computer Science Departments (from US Universites that award PhD's) from his listing gives the following, notice that dues to ties there are four schools ranked 1, of which three now prefer Python for teaching:
Material from many of these courses, in both Python and Java is available online as MOOCs or via Open Courseware (OCW).
Guo's discussion of the languages used and how Python is tending to replace others is interesting so it is summarized here:
Python with 27 courses surpassed Java (22), which has been the dominant introductory teaching language over the past decade. Some schools have fully switched over to Python, while others take a hybrid approach, offering Python in CS0 and keeping Java in CS1. However, at the high school level, Java is still used in the AP (Advanced Placement) curriculum.
The next most popular language is MATLAB (8), which is often used in CS0 courses to introduce scientists and engineers to programming.
C++ (6) is next on the list, but it's been firmly supplanted by Java over the past decade. The high school AP curriculum even replaced C++ with Java in 2003. C is just as popular as C++ in this list, but some introductory courses that use C (such as Harvard's CS50) teach it alongside other languages rather than having it be the sole language.
Scheme-based languages (4) are popular amongst a devoted subset of educators and programming language researchers. But in recent years, Scheme has been phased out in favor of Python at places such as MIT and UC Berkeley.
Scratch (3) is the only visual, blocks-based language, a genre that also includes Alice, App Inventor and Kodu, that made this list. 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. It doesn't figure on the undergraduate curriculum at MIT where it was and is being developed, but it is is included at UC Berkeley.
In his write up Guo also explains why he thought such an analysis important:
"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."
In the UK Python, and also Scratch, are being widely adopted for the K12 curriculum, together with the Raspberry Pi, for which they are both seen as natural companions.
Python's popularity coincides with computer science enrollments increasing, due no doubt to prominence given to the message that gaining a CS degree is good for employment prospects. Whether it stays the course and remains popular for teaching over the next decade, as C/C++ did in their heyday, is a question we will have to wait to answer.