Designed to fit a first- or second-year undergraduate course this is a thorough overhaul and replacement of Richard Bird''s earlier textbooks. It includes a fresh set of case studies and over 100 exercises with fully worked solutions. The author''s emphasis remains on fundamental techniques for reasoning mathematically about functional programs.