Functional Programming For Java

Many object-oriented programmers are largely unfamiliar with the potential value of Functional Programming (or "FP" to its friends), of what problems it solves, and how it can help in everyday Java code. This course aims to get you thoroughly comfortable with the "why," the "what," and the "how" of FP.

We'll introduce problems in small chunks and consider how traditional programming would solve them. Then, we'll consider what remaining problems there might be with the traditional solution, and look at how that solution could be improved. Finally, we'll drive through design to implementation of that new solution-a solution that's rooted in FP.As we work our way through the course, we'll look at the syntax elements of Java 8 that implement the design in modern Java. Because these ideas are largely new to many programmers, we'll work on several variations of the problems, and several examples of solutions for these, to build a strong familiarity with all the new ideas. Importantly, we'll also mix in discussions about the benefits, how to use these design elements in wider situations, and drive towards a really deep understanding of what's going on.The course assumes that you're a Java programmer who is comfortable using the essential features of the language.Topics include:From an OO design pattern to a functional foundationBuilding more functional conceptsWorking with Pure FunctionsStreams API