Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Elixir from Scratch: Functional, Concurrent, BEAM-Powered
Highest Rated
Rating: 4.6 out of 5(88 ratings)
16,168 students

Elixir from Scratch: Functional, Concurrent, BEAM-Powered

Master Elixir syntax, pattern matching, OTP, GenServers, and concurrent processes on the BEAM virtual machine
Last updated 7/2026
English
English [Auto],

What you'll learn

  • Write idiomatic Elixir using pattern matching, the pipe operator, and immutable data structures
  • Navigate IEx, Mix projects, and standalone scripts with confidence
  • Master atoms, tuples, lists, maps, keyword lists, structs, and binaries
  • Build modular code with named functions, multiple clauses, guards, and default arguments
  • Transform data using the Enum and Stream modules, comprehensions, and reduce-based patterns
  • Spawn lightweight processes, send messages, and coordinate work with Tasks and async_stream
  • Build stateful services with GenServer and design resilient systems with Supervisors
  • Apply advanced functional patterns including the with expression, Protocols, and basic macros
  • Understand the BEAM virtual machine, the actor model, and OTP foundations
  • Reason about fault tolerance, supervision trees, and the let-it-crash philosophy

Course content

7 sections49 lectures4h 28m total length
  • Why Elixir Exists: The Problem It Was Born to Solve3:13

    You will discover why Elixir was created by José Valim in 2011 to bring a modern, productive syntax to the battle-tested Erlang VM, and the kinds of problems it was born to solve: distributed, fault-tolerant, highly concurrent software for the web, telecoms, and real-time systems. You will see why mainstream languages struggled with those same demands, and what beginners and experienced developers each stand to gain from first-class concurrency, immutability, the actor model, hot code reloading, and the "let it crash" philosophy.

  • Hello, Elixir: Your First Runnable Snippet4:34

    You will write and run your very first Elixir program, printing a greeting to the console with IO.puts. You will learn what each piece does — the IO module, the puts function, and how Elixir treats a string literal — and run it both in the IEx interactive shell and as a .exs script, then modify the message to print your own name.

  • IO.puts vs IO.inspect: Printing for Humans and for Debugging5:46

    You will learn the difference between IO.puts for clean, human-readable output and IO.inspect for revealing the internal structure of any value. By printing a string, a list, and a tuple, you will see how inspect surfaces brackets, commas, and types that puts hides, why inspect returns its argument so it slots into pipelines, and when to reach for each during real development.

  • String Interpolation and Concatenation5:41

    You will build strings dynamically using Elixir's "#{}" interpolation syntax inside double-quoted strings, and contrast it with the <> binary concatenation operator. You will print a personalized greeting using both approaches and learn why interpolation is usually preferred for readability while <> is reserved specifically for binaries, then compose a greeting from two separate variables.

  • Comments and Code Documentation Basics5:47

    You will learn how to comment Elixir code with the # character for single-line notes, and meet the @doc and @moduledoc attributes that provide structured documentation. By annotating a small calculation with inline comments and printing the result, you will see how comments are stripped at compile time, and you will practice writing a comment that explains a line of code.

  • Running Code: IEx, Scripts, and Mix Projects7:32

    You will learn the three main ways Elixir code runs: typing expressions directly into the IEx REPL, executing a .exs script with the elixir command, and compiling a Mix project. By running the same snippet through each path, you will know when to reach for which, and you will save a snippet as a script and run it from your terminal.

Requirements

  • Basic programming experience in any language such as Python, JavaScript, Ruby, or Java
  • Comfort using a terminal or command line to run commands and navigate directories
  • A computer running macOS, Linux, or Windows with permission to install software
  • Willingness to think functionally and let go of mutable variables and class-based habits
  • No prior Erlang, functional programming, or concurrency experience required

Description

This course contains the use of artificial intelligence.

Elixir is the language that quietly powers some of the most resilient systems on the internet, from Discord's billions of messages to WhatsApp-scale messaging platforms and Pinterest's notification pipelines. Built on the legendary BEAM virtual machine that has carried Erlang through decades of telecom-grade uptime, Elixir gives modern developers a productive, expressive syntax on top of battle-tested fault tolerance. If you have been writing object-oriented code and wondering how teams build systems that simply do not go down, or if you are tired of fighting threads, locks, and shared mutable state, Elixir offers a refreshingly different mental model that is finally ready for mainstream adoption.

This course takes you from absolute beginner to a confident functional developer, weaving the "why" together with the "how" at every step. It is organized into seven sections, and each coding section opens with a short conceptual lecture that gives you the context, history, or design idea behind the topic before you dive straight into hands-on code, so the theory immediately becomes muscle memory. You will get your hands dirty in IEx, Mix, and your first runnable snippets, then work through values, variables, atoms, tuples, lists, maps, structs, and the full type system. You will master control flow through pattern matching, guards, the case and cond constructs, and the iconic pipe operator. From there you will build functions and modules, explore the Enum and Stream modules, and graduate into concurrency with processes, Tasks, GenServers, Supervisors, and parallel pipelines, alongside advanced functional techniques including comprehensions, the with expression, Protocols, and a first taste of macros. The final section then closes with a run of deeper conceptual lectures that pull everything together — the actor model and OTP foundations, pattern matching and immutability as design patterns, fault tolerance and let-it-crash, and the specialized worlds of Phoenix LiveView, Nerves, and Broadway.

This course is designed for programmers who already know at least one language and want to add a powerful functional, concurrent tool to their belt. Backend engineers, web developers exploring Phoenix, distributed systems builders, and curious polyglots will all feel at home. By the end you will be able to read and write idiomatic Elixir, model state with processes, design supervision trees, and reason about fault tolerance the way the Erlang community has for thirty years.

What sets this course apart is the balance of conceptual depth and practical syntax drills. You will not just memorize operators; you will understand why pattern matching exists, why processes are cheap, and why crashing can be a feature. Enroll today and start thinking the BEAM way.

Who this course is for:

  • Developers from object-oriented backgrounds curious about functional programming
  • Backend and web engineers planning to work with Phoenix or Phoenix LiveView
  • Engineers building real-time, distributed, or high-availability systems
  • Polyglot programmers who want to add a powerful concurrent language to their toolkit
  • Computer science students exploring the actor model, immutability, and the BEAM