Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

>"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.



This corroborates my long-term suspicion -- all those talk about provably correctness of programs is basically a way to gate keep people from entering the industry.

I mean, of the millions(?) of programmers out there churning out code, how many % of them actually prove their programs correct?

Despite what all the academia-types say, I firmly believe that programming is at most 50% math/logic, and the other 50% is literature or "writing skills". The ability to express ideas in text form that is easy for people to read and understand is one of the most crucial skills to have as a coder.

The point is, this aspect of programming is so neglected that people readily accept gatekeeping of aspiring programmers by scaring them away with advanced maths, but nobody ever told you that if your writing skills suck (even in English or your native language), you might end up a bad programmer...


"50% math/logic" can account for a lot of proving correctness. And it's not even hard, even writing your programs in a modern type-safe language will put you way ahead of the pack.


I'm not saying the math is insignificant. It's just that, if you agree in principle that a significant part of coding is making the code legible to other people, the question still remains -- why is math usually a required part of a CS degree, but you never hear CS degrees require training of technical(?) writing skills?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: