Seol mar théacs é seo: Lecture Notes on Algebraic and Coalgebraic Methods for Calculating Functional Programs