Codes from Beginning Haskell: A Project-Based Approach