|Title||Functional Programming (51400)|
|Instructor||Lamont Kenneth Samuels (email@example.com)|
MPCS FUNCTIONAL PROGRAMMING (TENTATIVE) COURSE SYLLABUS
NOTE: Course description originally written by David MacQueen and slightly modified by Lamont Samuels
This course presents the functional programming paradigm, based on the idea of functions as first-class values that can be computed and operated on like other data. Functional languages provide great power of expression while maintaining simplicity, making it easier to write correct and maintainable software. Functional programming has gradually found new applications in areas like finance, telecommunications, and graphics. The essential feature of treating functions as values has also been added to a broad range of conventional languages, such as Python, C++, Java, Apple's Swift and Google's Go language. The course will use the Haskell language based on its representing a purely functional language and its large community support that helps with writing Haskell programs easily. After learning the basic elements of these languages, we will explore functional programming techniques that can be exploited in many areas of application. In particular, we will examine how FP features are used in more modern languages and libraries such as C++, Java, Elm, and React libraries and how they are used in real-world settings. We will briefly compare the functional paradigm with the related paradigm of object oriented programming. If time permits then we will explore more advanced topics including concurrent functional programming and functional reactive programming.
Topics that will be explored in the course will include the following:
The course will include a mixture of (4-5) bi-weekly homework assignments and two exams.
This course will not have a required textbook. Along with the lecture notes, students may nd the following
references helpful in understanding the course material: