>"They found that they had to take calculus"

...On that note:

When I enrolled at the University of Maryland in 1985, it was still at the height of the fad, and the CS department actually had so many hopeful undergrads signing up to be CS majors that they had to filter them out and discourage them somehow.

They came up with this idea they called "Programming Calculus" that they taught with this language called "CF Pascal" (which we called "Crucially Fucked Pascal") that was lobotomized so it was simple enough to write "correctness proofs" (FWTW).

Hitting freshmen who have never programmed before with such a crucially fucked language, and then asking them to think about programming as calculus and write proofs that their programs are correct was an effective filtering technique!

(From a document I don't have the URL for, describing Programming Calculus:)

>Perhaps the most noticeable achievement in the Department's educational program was the restructuring of the first year of computer science courses. Unlike most other introductory courses which start by teaching a specific programming language, this first year is oriented around the calculus of programming. Concepts such as program correctness and formal verification are introduced, although at a simpler level, at the freshman level rather than at the advanced undergraduate or graduate level. The students write programs in a subset of Pascal, called CF-Pascal that includes character data and files only. "Advanced concepts", like integers and arithmetic, are delayed until the second semester. This new course was designed by Harlan Mills, aided by Victor Basili, John Gannon, Richard Hamlet, John Kohl and Ben Shneiderman.

(From "Maturation of Computer Science Research and Education at the University of Maryland: Evolution of the Department of Computer Science from 1979 through 2006", describing CF Pascal:)

https://www.researchgate.net/publication/277064236_Maturatio...

>Educational activities: The first year of Basili’s tenure as Department Chair was taken up with the
problems of students and getting the University to agree to a restricted major for the Department. By the
second year attention could be placed on other educational concerns.

>CF-Pascal: As part of the plan for the restricted major, the freshman Computer Science courses were
redesigned. For most of the 1970s, the SIMPL family of languages by Basili, was the basic programming
model. SIMPL-T was used in the freshman programming course and a systems programming variant,
SIMPL-XI by Dick Hamlet, was written for the PDP-11 minicomputer.

>Spearheaded by Dr. Harlan Mills, Vic Basili, John Gannon, and Richard Hamlet identified a subset of
Pascal called CF-Pascal. This was Pascal using only character and file data types, and essentially made
programming in CF-Pascal equivalent to programming a Turing machine using denotational semantics as
the programming model [Mills89]. This became the basis for Computer Science I – CMSC 112. In 1984
Marv Zelkowitz, as part of the IBM Fulcrum award (See Section 3.2), obtained a laboratory of 20 IBM
PCs. A syntax directed editor was developed for CF-Pascal, called SUPPORT, and this environment was
used in CMSC 112 during 1986-87 [Zelkowitz84]. CF-Pascal was used for about 6 years until the
freshman course changed again in 1989.11 Pascal became the basic language, which later became C++
and finally Java as the freshman programming language.

HCI researcher Ben Shneiderman did a study comparing the CF Pascal "SUPPORT" programming tools with a mainframe batch programming environment, and it turned out despite their predictions, SUPPORT users didn't receive statistically higher exam and programming project grades, and users preferred the mainframe batch system over SUPPORT.

(From "Subjective user evaluation of CF PASCAL programming tools", describing the study comparing CF Pascal SUPPORT to a mainframe batch computing environment:)

https://www.umiacs.umd.edu/publications/subjective-user-eval...

>Subjective user evaluation of CF PASCAL programming tools; Journal Articles; 1987; Chin JP, Norman KL, Shneiderman B; Department of Computer Science and Human-Computer Interaction Laboratory Working Paper

>Abstract: This study investigated subjective evaluations of two programming environments: 1) SUPPORT, an interactive programming environment with a syntax directed editor on a personal computer and 2) a batch run environment on a large mainframe computer. Participants were students in a 15 week introductory computer science course. In Part 1, one group of 128 first used SUPPORT, while another group of 85 programmed on a mainframe environment. After 6 weeks they were given an evaluative questionnaire and then switched programming environments. In Part 2, 68 used SUPPORT and 60 used the mainframe. At the twelfth week of the course, they were given two questionnaires, one evaluating the environment they had used in the last 6 weeks and one comparing both enviro nments. A measure of programming performance (exam and programming project grades) was also collected. SUPPORT was predicted to reduce the burden of remembering syntactic details resulting in better performance and higher subjective evaluations. Unexpectedly, the SUPPORT users did not earn statistically significantly higher grades. Furthermore, participants expressed a preference for the mainframe over SUPPORT. Specific items on the questionnaires were used to diagnose the strengths and weaknesses of each environment. Designers of syntax directed editors should focus on reducing the syntactic burden not only in programming , but also in the user interface of these tools.

So in the end, CF Pascal achieved its lofty goal of driving away more prospective CS majors than a mainframe batch computing environment could.