An Open Letter to All Universities
In 2014, CACM published a story about how Python is now the most popular introductory teaching language at top U.S. universities.
This Quora answer listed:
- DePaul University in Chicago: C++, Java, Jess, Python
- Waterloo University: Scheme (CS), C (Others)
- Charles University in Prague: Pascal / C#
- MIT: Python, Java (Civil and Environmental Sciences)
- Chalmers University of Technology in Sweden: Haskell
- Swiss German University in Serpong, Indonesia: C++ (IT), Python (Engineering)
- University of York: Scheme, Ada, C
- Ateneo de Manila University : Java (CS), C (Computer Engineering), Pascal
- CMU: C, Python
- TUM in Munich: Java, OCaml
- Obafemi Awolowo University ile-ife, Nigeria: FORTRAN (No longer taught), Java, Python
- NC State: Java
- Universidad Privada de Santa Cruz de la Sierra : C
- Vienna University of Technology: Java
- Iowa State: Java
- Chennai Mathematical Institute: Haskell
- Imperial College London: Haskell
- KTH in Stockholm: Java, Python, C, Scheme
- Harvard University: C
- FCUP in Portugal: C, Haskell and Assembly
- University of Utah: Java, C++
- Iran University of Science and Technology (IUST): C++
- Sharif University of Technology: Java
- National University of Singapore: C
- Stanford University: Java
- University of Michigan: C++ and Matlab (Engineers)
- Lousiana State University: Java
Apparently, Java is the most popular introductory language taught, according to this informal survey.
My question is: Where is Smalltalk? Smalltalk is the perfect teaching language, especially for object-oriented programming, the most commonly used paradigm in the IT industry. It virtually has no syntax, making the language supremely easy to learn. Smalltalk is simplicity incarnate. Its object purity and consistency and lack of distracting language details allows the student to focus on what is most important: solving programming problems and developing programming skills. Language selection should not even enter into the equation for beginners.
Moreover, Smalltalk was designed as an instructional language for teaching programming to children. That was part of the mission statement for Alan Kay, Adele Goldberg, and Dan Ingalls of Xerox PARC in the 1970s. Languages like Python and Java and C and C++ were never designed as teaching languages. They’re all major industrial languages. They all carry a lot of industrial baggage. They make learning how to program unnecessarily harder.
It would appear that universities are taking a more vocational attitude when it comes to teaching their freshmen programming. Teach them an industrial language so that they can be immediately more marketable to employers. It doesn’t matter if it’s a less optimal way to instruct them on the basics of programming. Otherwise, why choose Python and Java???
This vocational attitude doesn’t make much sense. The fact is, once you’ve learned how to program, picking up a second language like Python or Java is no big deal. Smalltalk and Python have a lot in common with respect to OOP, control structures, data structures, and data types. Moreover, most programmers I know are polyglot, so what’s wrong with having Smalltalk in your language quiver?
At least MIT had the right idea for decades: teach Scheme (and SICP) to their freshmen. Alas, even that is no longer true.
Hey, Universities, what has corrupted your academic thinking? Why aren’t you teaching programming in the best possible manner for your students?
Not only is Smalltalk the ideal teaching language, it points to the future of programming, as eloquently presented by Bret Victor:
Smalltalk is the future of programming for these reasons:
- Software development using files and folders is absolutely antediluvian. Smalltalk does everything in a universe of objects; source code is organized spatially rather than in long reams residing in text files.
- Live coding and debugging done right is an enormous and unparalleled productivity booster.
- Persisting execution state is extremely convenient for maintaining continuity, and hence the high velocity of development.
Shouldn’t universities be forward-thinking? Shouldn’t universities be trying to advance the state of the art? Smalltalk shows how modern software development could be so much better, so much easier, so much more productive than in the traditional manner of the past 50 years.
Today’s universities are letting us down. They’re condemning us to a world of lower productivity and greater stress in the creation of software.
Please forward this article to any universities for which you have a relevant contact. Thanks.