After having taught a university-level introductory computer science course in Java for sixteen years, now coming to an end since the department is moving to Python, I decided to wrap up the current semester by solving all the labs of my course in Mathematica. Doing so taught me quite a lot about functional programming and how these paradigms differ in general, and also shows how much easier it is to solve problems using Mathematica while going far above and beyond the original problems suitable for Java. Hopefully this document will be interesting and useful for other people.
PDF: NB