1. The author is a CS professor who wanted to make a "CS for non-majors" course that non-majors would find actually useful/interesting. So he asked a historian colleague what she wanted her students to know about computers.
2. She replied that she wanted her students to know that (a) databases exist, and if properly designed/indexed can make complex queries very fast, and (b) websites can be automatically populated from the results of DB queries, which makes these search results human-comprehensible.
3. In his CS department, databases and HCI/web design are courses which come late in the sequence, after stuff like algorithms, data structures, and networking.
4. To make (2) accessible without a bunch of pre-reqs, he designed an extension to Scratch/Snap (block-based visual programming languages) which let novices more easily write SQL queries and generate database-backed HTML documents.
5. As a result, he can now teach history majors CS concepts in a way which makes their relevance to historical work directly clear.
The expert wanted to teach SYN/ACK, which is completely irrelevant to the non-experts.
- A dual-Ph.D. physicist/electrical engineer, whose career had been spent doing "the hard stuff" fabbing modern x86 CPU's
- A successful programmer
Likely false. He is in a brutally demanding 1mm wide x 1km deep niche specialty. And the programmers he is exposed to are in a similar, adjacent niche.
I you interpret my "what aspiring programmers need to know" as "to do their jobs as programmers" - well...by definition, the successful programmer knows that (implicitly or explicitly).
If you interpret it more as general education requirements for young people these days - then I'd suggest a biologist, a climatologist, and a civil engineer.