Before We Dive Deeper

Learn about the course logistics and get introduced to the prerequisites for it.

Motivation for this course

There are many videos, blog posts, and articles on the internet that discuss Functional Programming (FP) concepts. There are also many books about Haskell and some good ones that talk about these concepts in other languages.

However, most articles and videos only cover the basic concepts of functional programming, leaving the rest up to us. Some books occasionally go a bit further by explaining how to apply the paradigm. Nonetheless, we rarely see concrete, comprehensive examples introduced as basic but useful projects.

So, we’ll be ambitious here. We’ll present a practical guide explaining the most important functional programming concepts in understandable terms and how to use them.

What you should know

This course has an object-oriented programming mindset and requires some JavaScript experience. Absolute beginners might find this course challenging because it skips several basic concepts and ideas. On the other hand, you won’t need multiple years of professional experience or functional programming knowledge to proceed. We’ll use Amazon Web Services (AWS) in a few chapters, but you should be able to follow along without any cloud computing background.

What’s next?

We’ll examine some JavaScript, some TypeScript tidbits, and other general guidance in upcoming lessons. Users with extensive JavaScript experience may skip or skim these sections.

We’ll also explain the core functional programming concepts and show how to use the fp-ts library. We’ll look at example projects loosely based on real-world applications, further exploring concepts from the functional world. Next, we’ll look at more advanced subjects, such as writing domain-specific languages (DSLs) and free monads. The course contains example code and some projects deployed in the AWS cloud.

This course is complete in the sense that it includes all relevant code. We do this for two reasons:

  • A student can avoid switching between the course and additional code on GitHub.
  • Most of the time, we omit certain non-vital parts for the sake of brevity, like relevant imports. However, including these parts is essential because beginners in a language or framework benefit from understanding which items to import.