1 Introduction 2 Functional programming in Haskell 3 The efficiency of functional programs 4 Concrete data types 5 Abstract data types 6 Sorting 7 Graph algorithms 8 Top-down design techniques 9 Dynamic programming 10 Advanced topics