<div dir="ltr">I would like to mention, maybe somewhat off-topick, that the question "what to teach first, functional or imperative programming?" looks to me a bit similar to the question "what to teach first, lambda calculus or Turing machine?".<div><br></div><div>While lambda calculus looks like a deep and exciting rewriting system, with interesting algebraic and combinatorial properties and a simpler and more satisfying definition than that of a Turing machine, it might be not the best model of algorithm to introduce kids to for the first time. At the very least, it would be necessary to prove confluence or to restrict to one evaluation strategy (so no laziness, or the other way around). Justifying Church-Turing thesis with lambda calculus instead of Turing machine is intuitively difficult, if at all possible. I have heard from a colleague (but do not have a reference for this, so not quite sure) that it was the Turing's solution of Hilbert's decision problem, and not the Church's, that was fully accepted by the community.</div><div><br></div><div>Alexey.</div></div>