Functional Programming For Beginners With JavaScript

A practical guide that teaches you Functional Programming With JavaScript. Optimally paced, No-nonsense. Learn quickly!

4.57 (1732 reviews)
Udemy
platform
English
language
Web Development
category
instructor
Functional Programming For Beginners With JavaScript
8,699
students
5.5 hours
content
Apr 2018
last update
$74.99
regular price

What you will learn

The essence of Functional Programming, without all the unneeded technical Jargon

How to create applications, in a functional programming style

Build sophisticated apps, with simple code

What Pure Functions are, and why you should use them

How to create new logic, without writing the logic, by using Function Composition

What Currying And Partial Application are, and how they are helpful

What Immutable Data Structures are, and why you should use them

Why Eliminating and Controlling Side Effects is so important

The benefits of Higher Order Functions

How to write code in a style that minimizes the risk of difficult bugs

The Beauty of Declarative Programming

How the Ramda JavaScript library, makes functional techniques simple in JavaScript

Why take this course?

"Why should I learn Functional Programming?"

Most software written today, is overly complex, difficult to understand, challenging to test, hard to change and filled with hard find bugs.

Ouch! So how do we end up with these problems?

Here’s a few of the many reasons:

  • Not using the simplest building blocks possible… If you start with something complicated, you’ll end up with something even more complicated.
  • Programming in a style that is more susceptible to complex bugs
  • Not properly respecting and handling Side effects(talking to servers, input / output, etc)
  • “Sprinkling” Application State all throughout codebases
  • Unnecessarily mutating data
  • Code Duplication (particularly sneaky ones, like similar class methods in Object Oriented Programming )
  • Writing more code than necessary

These are just a few of the many problems that lead to frustrating jobs, working on codebases that are hard to maintain and add features to.

Functional programming addresses the above problems in the following ways:

  • Simpler apps, because functional programming uses the simplest building blocks possible, just plain old data and pure functions to transform the data (easier to understand and work with)
  • Uses code styles that are simpler and less prone to complicated bugs (more time doing productive work)
  • Eliminating Side Effects, as much as possible and controlling them when they are needed (reduces bugs)
  • Avoids data mutation as much as possible (reduces bugs)
  • Uses pure functions, that can work with many different types of data (improved code reuse)
  • Uses generalized functions, that can be specialized to suit different needs (less code, same functionality)
  • Creating new functions, without adding any new logic, using function composition (more functionality, no code added)

Functional programming, in my experience, is more productive than Object Oriented Programming because there are fewer things to think about, so you don’t overwhelm your working memory.  Usually your just thinking about plain old data, and data transformations, using functions.  Additionally, in Functional Programming, there aren’t tons of competing ways of doing the same thing, so you don’t have to think about unnecessary things. Functional Programming is constraining, and thats a good thing. You’re able to better focus, on the problem you’re solving, rather than the tools you’re using to solve the problem.

In Object Oriented Programming, you have to think about many different types of complicated, stateful objects that can be interacted with in different ways.  You’ve got to think about more than just data, and data transformation… You’ve got to think about things like State and Side Effects, far more than you do in Functional Programming.

“What will I learn in this course?”
You'll learn how to create front end web applications in a Functional Programming Style, through hands on learning.  You'll be building 5 significant web applications in this course, from the ground up.  At the end of this course, you'll understand and appreciate the things that are important to Functional Programmers and odds are, you'll fundamentally change how you write programs. 

“What frontend framework will I learn?”
I could teach you Functional Programming using a popular frontend framework like React or Vuejs, but frameworks come and go, and the principles I'll teach you are timeless principles that transcend frameworks... So Instead, you'll learn functional programming by just using Modern JavaScript, and a few helper libraries.  The knowledge and skills you'll learn in this course can be used with the popular frameworks of today and tomorrow!

“Will this course be 100% JavaScript from scratch?”
We won't be using any frameworks, but we will use a few helper libraries where it makes sense as described below.

“What JavaScript Libraries are used in this course, and why even include libraries?”
The main focus of this course is teaching you Functional Programming concepts.  Manually writing everything from scratch, could very well distract from the core concepts, so to stay focused, we'll use a few libraries where it makes sense.  

Libraries used:

  • Ramda - We'll use the awesome Ramda JavaScript Library, which similar to lodash and underscore, but it's built to leverage Functional Programming Concepts.  In my opinion, this library is a must use library for functional programming in JavaScript.
  • Hyperscript - We'll use the hyperscript library to generate html and css.  For example, we'll call hyperscripts 'div' function to generate html divs.  ie div('hello') => <div>hello</div>
  • Tachyons - This is a css framework that embraces Functional Programming concepts like composition.
  • Webpack/Babel - We'll setup a minimal build system using webpack, babel and a few related plugins.  This is a onetime setup step.
  • Virtual-Dom - We'll use a virtual dom library to efficiently update webpages.  This is the technology used by modern frameworks like React and Vuejs.  This is a onetime setup step.

“I'm a backend developer, but I'd like to learn Functional Programming... Should I take this course?”
The knowledge and fundamental principles you'll learn in this course, can easily be translated to the backend.  I'm teaching you Functional Programming for the frontend, because programming on the front end can be quite challenging and Functional Programming is a particularly good fit for the front end.  It's important to note, this course focuses on Modern JavaScript and doesn't use a front end framework, so you won't have to learn frontend technologies that you may never use.

“Can I write Functional Programs in JavaScript?”
Yes, absolutely.  JavaScript allows you to program in many different styles, and using functional programming is an excellent choice. You'll start by learning Functional Programming techniques using modern JavaScript ( ES2018 ), then later you'll learn about the excellent Ramda JavaScript library. You may have heard the phrase "JavaScript, the good parts".  When you're programming in a functional style, you're simply using the good parts of the language, and you'll naturally avoid the bad and confusing parts (like the this keyword ヽ(ಠ_ಠ)ノ).  

“Isn’t Functional Programming just a small niche in Computer Science?”
This used to be true, but not anymore.  For decades Object Oriented Programming was the dominant force in software development, but in the last few years Functional Programming has had huge growth, and it’s used in big companies like Facebook, Twitter and even Walmart.  But it’s not just the big companies that are using Functional Programming, small and medium sized companies all over the world are turning to Functional Programming.
In December 2017, Forrester research released a study titled “The New Dawn Of Functional Programming”, which asserts “Functional Programming is beginning to hit the mainstage… the software development world is outgrowing stateful, object-oriented development”.
It always makes sense to learn upward trending technologies, and Functional Programming is an excellent choice for this reason and many more.

“Don’t I have to be a Math genius to understand Functional Programming?”
Absolutely Not! For decades the primary adopters of Functional Programming, were largely academics and people interested in specialized areas of Math.  During that time, most working programmers (myself included) didn’t really understand Functional Programming, and the people who did understand Functional Programming, didn’t do a great job explaining what it was, what the benefits were, how to do it… etc.
The truth is, you don’t need to be a Math genius to understand Functional Programming.  The essence of Functional Programming, has little to do with Math, which you’ll see in this course.

“Won’t I have to learn a whole new vocabulary to understand Functional Programming?”
No! I won’t bombard you with unneeded technical Jargon, in fact I avoid it as much as possible, and when I do use new Functional Programming vocabulary, it’s usually just to associate a name, to something you already learned with plain old spoken english.

“Will the knowledge I gain in this course be obsolete in a year or two, just like my Angular 1 knowledge is?”
No! What you’ll learn in this course will be relevant and useful for years and probably decades
“How is that possible?”
Because, I’m not teaching you functional programming in the context of particular framework like React or Vue.js.  Frameworks come and go, but the skills you’ll learn in this course transcend the popular framework of the day.

“How is it that Code written in a functional programming style, is less prone to have hard to find bugs?”
The most difficult to find and fix bugs, are related to code that allows Side Effects (talking to servers, state changes etc). Functional Programming puts a significant emphasis on Eliminating and Controlling Side Effects... So, it would make sense that eliminating Side Effects where possible, and tightly controlling side effects when they are needed would result in fewer complicated bugs.  

“You say Functional Programming is simple, but I’ve tried Functional Programming and it was hard!?”
Ah, I didn’t say it was easy, I said it was simple.  Writing simple code, isn’t easy, often it’s difficult.  But sophisticated software built with a simple codebase is a thing of beauty, and it’s totally worth it.  
If you know and love Object Oriented Programming, you may be in for a challenge.  Much of what you know about programming, must be re-evaluated and often disregarded.  I suspect, it might be easier for a new programmer to learn functional programming vs an experienced Object Oriented Programmer, because Functional Programming is so different from Object Oriented Programming… But again, it’s totally worth it :)

“I don't understand some of the things your talking about like 'side effects' and 'pure functions'?”
Don't worry, in this course I start with the very basics, so you should have no problem following along. Additionally, I offer some very unique, free options for getting help, which I describe in the video, on how to get help.

“Is this course for me?”
This course is meant for 2 types of students:

  • New programmers who have taken an introductory programming course
  • Experienced programmers who are interested in learning Functional Programming *

* There might be a couple videos the Experienced programmer could skip, but I suggest re-familiarizing yourself with the basics, as they are presented from a Functional Programming Perspective.

If you’re not sure if this course is right for you, remember there is virtually no risk to you as you’ll have 30 days to return the course for a refund.

“Why should I take this course from you?”
My courses are different from most Instructors.  I don’t believe a course should cover every single part of a language or technology.

I’ll explain why with an analogy.
Imagine you wanted to learn Spanish.  One approach to learning Spanish would be to learn every single Spanish word.  There are around 100,000 words in a Spanish dictionary... ouch!  
Here’s the thing, 1,000 Spanish words that make up 80% of all spoken Spanish… 2,000 words makeup 95% of all spoken words.
Wouldn’t it be better to focus on learning the 1,000 or 2,000 most used Spanish words?  You’d be fluent much quicker… In fact, trying to learn all 100,000 Spanish words, kind of sounds ridiculous, when you realize most of them are never used.

These same principles apply to Programming Languages and Technologies.  Many instructors make 10, 20 and +30 hour courses, jam packed full of stuff you could just avoid!
I don’t want to waste your time, so I’ll only be teaching you the most used parts of JavaScript and Functional Programming, so you’ll be fluent much faster.

Screenshots

Functional Programming For Beginners With JavaScript - Screenshot_01Functional Programming For Beginners With JavaScript - Screenshot_02Functional Programming For Beginners With JavaScript - Screenshot_03Functional Programming For Beginners With JavaScript - Screenshot_04

Reviews

Rainer
January 31, 2024
Dieser Kurs is grossartig. Man lernt auf besondere Weise die Informatik von einer anderen Seite kennen und es eröffnet sich eine neue wunderbare Welt.
Carl
December 21, 2023
I wish I would have started with this course initially! I am digging the straight forward explanations and approach.
Andrew
October 2, 2023
Spends too much time nattering, just want the guy to get to the raw points. So many powerpoint pictures in early part of course and each episode appears he will get to the point ... in the next video becomes more and more frustrating
Daniel
August 31, 2023
Pretty good, though the ... operator seems messy and the motivation for using it unclear. I think the R.partial function could be explained better.
Guillermo
May 8, 2023
Till now I really enjoy the course way. For me, with years of object-oriented experience on my back, it is really interesting this paradigm. And I think the hands-on approach is part of its charm.
Hernán
January 26, 2023
Me gusta que el curso se base en la creación de apps y cómo se menciona que se integrará el aprendizaje, es decir, por medio de repeticiones.
Maria
November 20, 2022
the course has been pretty amazing so far, I hope that the course will keep the good work up until the last video
Warren
August 13, 2022
This was quite a good course. Great intro to functional programming, and I was immediately able to use some of the techniques to improve my coding at work. Some of the material felt a little bit rushed, but you can always rewind and watch again, or pause and experiment on your own.
Udemy
August 2, 2022
I'm an experienced React and Angular programmer. I expected to learn about the core concepts of functional programming with the kind of vocabulary that functional programmers use. There was a little bit of that - discussion of imperative vs. declarative and pure vs. impure functions. A lot of this class is an advertisement for the libraries the author likes, which they use to build some basic web applications. So basic they don't take accessibility or scale into account. The author basically implements their own web framework, which I think is a strange thing to advise new developers to do. They are opinionated about style in a way that makes the class hard for programmers who have reasons not to use that style. It's inappropriate when the subject of the course is functional programming in JavaScript.
Andrea
July 12, 2022
Some of this is very beginner but his explanations are clear and concise and easy to follow for any level of learner.
Liliana
July 5, 2022
En la mitad del curso aproximadamente acelera muchísimo el ritmo de explicación con el que venía y se hace mas difícil seguir los temas
Joshua
June 17, 2022
I really liked a lot of the course. My biggest criticism is the mix of levels of information in the program. The first few sections talk about some incredibly basic concepts inside of the javascript language, but very quickly it felt a lot like getting thrust into the deep end of the pool once I got to section 7 or 8 as the difficulty curb accelerated quickly. Having spent some time coding professionally and teaching React, I was able to draw on my past experience and understand a lot better why React projects are designed the way they are from this course, but without having prior experience I think this course would be very difficult to make the leap. So to me, it felt like the first few sections were talking to an audience with absolutely no experience at all (which I didn't really need), but the other half were talking to an audience that had a lot more experience under their belt that they could draw from. I think a lot of the information in the course is really great, I just think the tone of the first few lessons could be revised to match later sections.
cetin
March 19, 2022
When doing projects, he writes functions too fast. It is like he memorized and write from his head. It is not good even for a seasoned programmer.
Michael
March 19, 2022
Excellent material, very well presented. Highly recommend this to anyone wishing to take their first steps in JavaScript Functional Programming.
Christopher
January 22, 2022
I like the description of why we're going to operate the way we operate - I also like the breakdown to help understand the nuances of interactive applications

Charts

Price

Functional Programming For Beginners With JavaScript - Price chart

Rating

Functional Programming For Beginners With JavaScript - Ratings chart

Enrollment distribution

Functional Programming For Beginners With JavaScript - Distribution chart
1537962
udemy ID
2/2/2018
course created date
11/23/2019
course indexed date
Bot
course submited by