Bit of history: The Darmouth Basic Manual (1964) follows a common order of exposition: expressions, variables, constants, assignment, tests/loops; calling subprograms being considered an "advanced topic" (well, the last thing, after using tables).
This reminds me of the first version of Fortran, (see preliminary report of 1954) which had no user-defined subroutines/functions at all.
So teaching the importance of decomposing code into smaller (reusable) units was not considered a major priority. And as a consequence we had generations of students who wrote functions/subprograms only under coercion.
There's a recent paper (2016) about a procedure-oriented approach to teaching programming in C ; the question is, were there similar approaches in the sixties ot seventies?
Question: Was this order of topics standard in the 1960s for imperative programming? Bonus points if you can directly link to textbooks that demonstrate your answer.
Remark: Counter-examples will certainly by found in the presentation of functional and LOGO programming.
In Teaching Children Thinking, by S. Papers, 1971, page 5-2 it is shown that after demonstration of
ROTATELEFT 90, the student can write the first (endless recursive) procedure
TO CIRCLE FORWARD 100 ROTATELEFT 90 CIRCLE END
Here the procedural aspect comes even before variables, expressions etc.
- In the famous SICP book (not for innocent children) using Scheme, definition of functions come after expressions and before IF etc. But it comes much later (1985).
Partial answer: the ACM Curricula Recommendations for Computer Science, vol 1 (1983) contains the 1968's course contents and outlines. In course B1 (page 21) Introduction to Computing :
- "This outline reflects an order in which the material might be presented [...]"
"2. Basic Programming. Constants identifiers, variables, subscripts, operations, functions, and expressions. Declarations, substitution statements, input-output statements, conditional statements, and complete programs"
"3. Program structure. Procedures, functions, subroutine calling, and formal-actual parameter association. Statement grouping, nested structure of expressions and statements, local versus global variables [....]"
The book A Fortran Primer (1963) by E.I. Organick starts explaining subroutines and functions at page 89. Last section before "12. Preparation of Punch Card Program Decks". Can be considered as a good textbook for beginners, not a Fortran reference manual. Read it if you miss good old time flowcharts.