The choice of programming language for education is an intensely debated topic. On the one hand, the programming language is supposed to be relevant in that its organisation, structures, and paradigms adhere to current standards and best practices in industry and academia. On the other hand, the programming language is expected to be simple, that is, easy to use and, of course, easy to learn. This increasingly means that we need an introduction to concepts shaped by a long history without all the historic baggage.
The flip side of these requirements of an educational programming language is its power to shape thought patterns, mental models, and best practices of the students, and thus of their future. Moreover, the aspect of simplicity may have the power to decide whether programming will become democraticed or remain the realm of a few highly paid specialists.
From the many programming languages that have been used in programming education, few stand out for being as popular and widely used as Pascal and Python. Decades apart, both have been designed with simplicity and relevance in mind, and yet it seems they could not differ more in so many design choices, most notably typing.
In this article we therefore consider the similarities and differences between Pascal and Python with emphasis on an educational perspective. We identify core features that might explain their suitability for education, compare their strengths and weaknesses, and discuss to what extent the premises behind their design still apply to the future of programming education.