The problem of teaching programming skills to new generations of software engineers is as old as the computers themselves. Each generation has tried to do it in a slightly different way, with various degrees of success. There is a lot of literature available online about the subject, and in this article we will point out papers and books that we found to be the most noteworthy. By no means this is an exhaustive list, but it features some interesting entries that might serve as a starting point for your own research.
It would be unwise and useless to try to summarize in a thousand words the immense contributions of Sir Charles Antony Richard Hoare, also known as Tony Hoare (I suppose we are all good friends in this industry) or, with a more Tolkien feeling, as C. A. R. Hoare. I will settle for “Sir Tony Hoare” in this article; familiar yet respectful enough.
Here is a confession. The first drafts of this issue of De Programmatica Ipsum were written under the name "Structured Programming". Understandably enough, the news of Niklaus Wirth's passing triggered a prompt renaming and the choice of a somewhat narrower focus. However, Pascal's rise in popularity during the 1970s and 1980s cannot be explained unless we elaborate on Structured Programming, and this month's Library book is among the most important ones ever written about the subject.
We have often talked about software economics in this magazine. For example, when we enumerated Eric Sink’s perspectives on the software business, discussed platforms as a paradigm for economic analysis, or talked about how Brad Cox advocated for an object-oriented economy. But there is a more extraordinary author about the subject, one we mentioned a few times in this magazine and who sadly passed away last August: Barry Boehm.
Many developers will have heard of Barbara Liskov, through her appearance in Robert C. Martin's SOLID list of design principles. The abstract of her 1994 paper with Jeanette Wing, A Behavioral Notion of Subtyping, makes the principle sound easy in, well, in principle.