Many thanks for the support @ghoen, but it seems Coursera set their deadline, and that’s it.

I’m focusing on an improved version to pitch to Udemy. One of the contraints I had with Coursera is free courses are limited to one hour, whereas Udemy allows what it calls promotional courses (ie free) to be up to two hours, so I can double the number of short lecture videos.

I’m planning to go through my translation of Jennifer Widom’s SQL intro into Prolog I put at SWISH -- SWI-Prolog for SHaring again, but more slowly and tying it into classical logic.

My outline would go something like this:

1.How logic, sets and relational databases are tied together by set-builder notation, using queries to make a set of student IDs for computer science applicants, electrical engineering applications etc.

2. Explaining how set complements are done in Prolog. (Creating a set of all the students who haven’t applied for computer science in the example may seem easy, but there are quite a lot of subtle traps most novices will fall into, and there’s a catch in Prolog that `\+`

breaks associativity).

3. One lecture devoted to *and*, showing how it creates joins and intersections in relational databases, how it equates to multiplication in two-valued algebra, and how it’s used for traditional “imperative” programing in Prolog.

4. One lecture devoted to *or*, how it equates to addition in two-valued algebra. In Prolog, *or* is a bit more complicated than *and* in that besides semi-colons, it can also be written as separate rules with neck operators (which one person complained I didn’t explain properly in the Coursera version). *Or’s* relationship to `if p(x) then ... else...`

is generally confusing in programing, so I’ll also explain how cut ! fits in and Prolog’s `->`

syntactic sugar for `,!,`

which I previously omitted.

5. How to find all subsets in the application example. It only occurred to me after I used the difference between EE and CS applicants which in Jennifer Widom’s example is an empty set, ie false in Prolog, meant EE ⊆CS. I’d never understood the p ⇒ q rule in classical logic (which can be rewritten ¬p ∨q) before. Playing around with writing a general query to find all subsets of majors in Widom’s application example I found that De Morgan’s law converted my query to the material implication rule, so I found it a very educational example. Furthermore, if one writes the truth table for p ⇒ q using 0 and 1 instead of F and T, it equates to p ≤ q, a handy mnemonic for P ⊆ Q.

6. How to find all equivalent sets. Another bit of enlightenment I got was the algebraic manipulation required to get from P ⊆ Q and Q ⊆ P to (p ∧q) ∨(¬p ∧¬q) involves using algebra’s distribution rule in logic.

7. How to find all disjoint sets.

I’m going through a classical logic phase at the moment, so I find this stuff fascinating. But have to concede there is the slight problem it may bore most people comatose, so am battling to fill in Udemy’s questionnaire asking who the target market of my proposed course would be.