  We commonly think of mathematics as bringing precision to application
domains, but its relationship with computer science is more complex. This
experience report on the use of Racket and Haskell to teach a required first
university CS course to students with very good mathematical skills focusses on
the ways that programming forces one to get the details right, with consequent
benefits in the mathematical domain. Conversely, imprecision in mathematical
abstractions and notation can work to the benefit of beginning programmers, if
handled carefully.
