"My gut feeling says that students never learned strong reasoning skills and mathematical induction."<p>This quote from the linked article resonates with me quite a lot. I see people trying to understand recursion in code and not getting the hang of it.<p>CMU is one university where it's CS curriculum teaches functional programming after a rigorous course on Pure Mathematics Intro - <a href="https://www.math.cmu.edu/~jmackey/151_128/welcome.html" rel="nofollow">https://www.math.cmu.edu/~jmackey/151_128/welcome.html</a>. The functional programming course (15-150) materials are not public, but they use SML and uses heavy use of induction proofs and recursive implementations.<p>The other line of programming pedagogy argues that only simple high school algebra is enough to teach programming via recursion. I am talking about How to Design Programs: <a href="https://htdp.org/" rel="nofollow">https://htdp.org/</a> and now the DCIC book: <a href="https://dcic-world.org/" rel="nofollow">https://dcic-world.org/</a>. They argue that looking at the data and its inherent structure is enough.<p>The above two approaches are mostly polar opposites of each other. I want to know what other HNers think about this.