To be clear, this doesn’t actually do much for introducing codata, though it is a nice overview of recursion schemes. The point where codata is mentioned is codata only by coincidence of the properties of data types in Haskell.
For a really great intro to codata I like the book Vicious Circles by Barwise and Moss. Also nice (and shorter!) is “A Tutorial on (Co)Algebras and (Co)Induction” by Jacobs and Rutten. Lots of Rutten’s work is recommended here.