Data structures and Algorithms are two important concepts when it comes to learning any programming language, functional or object oriented, from the ground up. In order to master a language, you must first master the basic groundwork for that language.
Data structures such as lists, trees, maps, etc. represent underlying data and are often required to be sorted and merged, transformed and matched in some way. To do this manually, it would require a lot of time and man power, which is where algorithms play a crucial role. Software engineers have created algorithms that provide a solution for this task, which is consistent, repeatable and testable with a set of metrics to quantify performance.