One of the first concepts I show when teaching Model-driven engineering is the MDE equation (Models + Transformations = Software ) which obviously revisits the well-known Niklaus Wirth‘s equation: Algorithms + Data Structures = Programs.
I thought that by linking the two, it would be easier for the students to grasp the main aspects of MDE but I was wrong. Relating the two doesn’t work because it turns out none of my students ever heard about Wirth equation, nor about Wirth himself and most of them have no idea what Pascal is (happened already three times with both undergrad and master students).
Frankly, I’m puzzled. I’m not saying they should learn Pascal (though which language should be used to teach programming to first-year students is an interesting controversy) but I do believe that some context about the languages they learn is needed. Students should know the basics of the main programming paradigms (structured, object-oriented, functional,…) and get a basic feeling of the strengths of each one, their representative languages, the reasons that motivated their creation, etc. Given the quickly evolving language landscape, students must understand the relationships between the different languages and how they complement each other. Otherwise it won’t be obvious to them that the programming skills they learn can be applied to a variety of languages.
A quick search shows that “history of programming languages” is not a common course (we do have a lot of “history of computer science” courses but they tend to focus more on the hardware part). Hope you agree with me that this should be changed in a near future. You know, “those that don’t know programming history are condemned to repeat it”.