Course Description

Functional Programming is a programming paradigm that focuses on building software applications by composing functions and avoids changing state and mutable data. Haskell is a popular programming language that follows the principles of Functional Programming. The course "Functional Programming in Haskell" is designed to teach students the fundamental concepts of Functional Programming and how to apply them using Haskell. The course will cover a range of topics, starting from the basics of Haskell syntax to more advanced topics such as recursion, higher-order functions, type classes, and monads. The course will begin with an introduction to Haskell and Functional Programming. Students will learn about the different paradigms of programming and how Haskell implements Functional Programming. They will also learn about Haskell's syntax, data types, and control structures. Once students have a good understanding of Haskell syntax, the course will move on to more advanced topics such as higher-order functions, which are functions that take other functions as arguments or return functions as results. Students will learn how to use higher-order functions to build more complex and reusable code. Next, the course will cover recursion, which is a powerful tool in Functional Programming that allows functions to be defined in terms of themselves. Students will learn how to use recursion to solve problems such as finding the factorial of a number or computing Fibonacci numbers. The course will also cover type classes, which are a way to define a set of functions that can operate on a specific data type. Students will learn about the most commonly used type classes in Haskell, such as Num, Eq, and Ord. Finally, the course will cover monads, which are a way to manage side effects in Functional Programming. Students will learn how to use monads to handle input/output operations and exceptions in Haskell. Throughout the course, students will be given a series of programming assignments that will help them apply the concepts they have learned. They will also have access to an online forum where they can ask questions and discuss the course material with other students and the instructor. By the end of the course, students will have a solid understanding of Functional Programming and how to apply it using Haskell. They will be able to write clean, efficient, and reusable code using higher-order functions, recursion, type classes, and monads. They will also have a solid foundation for further study in Functional Programming and related fields. Author: Graham Hutton