Introduction to the Course

Get an idea about what to expect from this course.

Functional programming

In the functional programming paradigm, functions are the basic building blocks, all values are immutable, and the code is declarative.

When we search for “functional programming,” a lot of unusual terms pop up. It often seems like it was made for mathematicians, not for programmers. With these unusual terms and math-focused design, it’s no wonder why many developers find functional programming hard to learn.

Functional programming is a programming paradigm. A programming paradigm consists of the rules and design principles of building software; it’s a way of thinking about a programming language. The functional paradigm builds software using pure functions that are organized to describe what the software must do, not how it must do it. Now, with this in mind, we’ll learn functional programming foundations in detail and from scratch. The course will introduce Elixir syntax and, at the same time, explain functional concepts at an approachable pace.

Elixir

Elixir is a functional programming language that runs in the Erlang VMBEAM (Bogdan/Björn’s Erlang Abstract Machine) which is the Erlang Virtual Machine, a powerful environment to run distributed systems. This course uses Elixir because of its fun syntax, vibrant community, and production-ready tooling. Elixir syntax lets us focus on what’s important while learning functional programming.

The simple and pragmatic syntax of Elixir makes it an accessible programming language for everyone, even for those who haven’t learned the functional paradigm. Elixir is a robust and production-ready language, and it lives in the Erlang ecosystem, which has existed for 30 years, delivering software with the reliability of Nine 9s99.9999999% uptime.

Course overview

In this course, you’ll find a beginner’s guide to functional programming concepts and an introduction to Elixir. The course is divided into seven chapters:

  • Chapter 2, Introduction to Functional Programming, introduces the main concepts of functional programming that will persist throughout the course. We’ll learn why functional concepts matter and help us create better software.
  • In chapter 3, Working with Variables and Functions, we’ll start learning Elixir from scratch, from simple expressions to modules. We’ll explore the base building blocks of a functional program: functions. We’ll also introduce anonymous and named functions.
  • Then in chapter 4, Using Pattern Matching to Control Program Flow, we’ll learn how to create conditional code with functions. Pattern matching plays a central role.
  • Repetition is a fundamental task in any programming language. In chapter 5, Diving into Recursion, we’ll learn the functional way: recursive functions.
  • In chapter 6, Using Higher-Order Functions, we will explore how to create better functions that hide complex code. We’ll cover how to create functions that can receive or return functions, called higher-order functions.
  • Chapter 7, Designing Your Elixir Applications, is about creating a larger application and organizing it. We’ll explore modeling data, creating contracts, and achieving polymorphism using Elixir.
  • Finally, in chapter 8, Handling Impure Functions, we’ll look at how to work with impure functions. It will explore the pros and cons of four strategies: conditional code, exception handling, monads, and Elixir’s with.

Target audience

If you’re an object-oriented programmer ready to take the next step, or a college student graduating and looking for a language to work with, this course is for you. If you’ve tried to program in Elixir before and had a hard time because of the functional programming concepts, this course will give you the knowledge that you need to become a future expert. If you’re already an Elixir or functional programming expert, you’ll find some valuable tips here.

In other words, this course is designed to break down functional programming with Elixir, regardless of your current experience with functional programming.

Prerequisites

This course is for beginners in functional programming and Elixir. To get the most out of this course, you should have some experience in building simple algorithms, debugging errors, and running commands in a terminal. In addition, you should have at least an entry-level knowledge of software development. Any experience in other languages will help you out. You don’t need to be an expert in any of the above topics because we’ll start from scratch.