Tags
Language
Tags
April 2024
Su Mo Tu We Th Fr Sa
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4

Learning Path:Learning Functional Data Structure & Algorithm

Posted By: ELK1nG
Learning Path:Learning Functional Data Structure & Algorithm

Learning Path:Learning Functional Data Structure & Algorithm
Last updated 9/2017
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 636.12 MB | Duration: 5h 28m

Unlock complex data structures and algorithms and get the most out of functional programming

What you'll learn

Learn about the O notation

Get familiar with runtime and space complexities

Learn to drop, concatenate, append, and prepend lists

Understand what backtracking algorithm is

Learn to build cost-efficient applications

Learn how ADTs are implemented in a functional setting

Understand functional features such as lazy evaluation and recursion

Get to know Scala’s best practices and idioms

Requirements

Working knowledge of functional language especially Scala is required.

Description

Data structures and algorithms are the fundamentals of computer programming. Functional data structures have the power to improve the code base of an application and improve efficiency. With the advent of functional programming and powerful functional languages such as Scala, Clojure, and Elixir becoming part of important enterprise applications, functional data structures have gained an important place in the developer toolkit.
So if you've got some prior knowledge on functional languages and wish to get acquainted with data structures and algorithms with simple functional implementation, then go for this Learning Path.



Packt’s Video Learning Path is a series of individual video products put together in a logical and stepwise manner such that each video builds on the skills learned in the video before it.




Let's take a quick look at your learning journey. This Learning Path begins with an introduction to functional programming. You will learn about Lists, the work horse data type for most functional languages. You will then understand structural sharing and how it helps to make immutable data structures efficient and practical. Next, you will learn about binary trees wherein you will build complete trees, greedy algorithms, and backtracking. Moving ahead, you will seehow to use abstract data types (ADTs) such as stacks, queues, trees, and graphs and will learn to implement them in functional programming. Finally, you will learn implementation techniques such as amortization and lazy evaluation to ensure code efficiency.




By the end of this Learning Path, you will be able to write efficient functional data structures and algorithms for your applications.





About the Author:

For this course, we have combined the best works of this esteemed author:




Atul S. Khot is a self-taught programmer. He started writing software in C and C++. A Linux aficionado and a command-line guy at heart, Atul has always been a polyglot programmer. Having extensively programmed in Java and dabbled in multiple languages, these days he is getting increasingly hooked on Scala, Clojure, and Erlang. Atul is a frequent speaker at software conferences, and a past Dr. Dobb's product award judge.
Raju Kumar Mishra is a consultant and corporate trainer for big data and programming. After completing his B.Tech from the Indian Institute of Technology Dhanbad, he worked for Tata Steel. His deep passion for mathematics, data science, and programming took him to the Institute of Science (IISc). After graduating from IISc in computational science, he worked for Oracle as a performance engineer and software developer. He is an Oracle-certified associate for Java 7. He is a Hortonworks-certified Apache Hadoop Java developer, and holds a developer certification for Apache Spark (O'Reilly School of Technology and Databriks), and revolution R enterprise-certified specialist certifications.

Overview

Section 1: Functional Data Structures and Algorithms

Lecture 1 The Course Overview

Lecture 2 The Imperative Way and a Higher Level of Abstraction

Lecture 3 Functional Programming and Boilerplate

Lecture 4 Higher Order Functions

Lecture 5 Recursion Aids Immutability

Lecture 6 Copy-On-Write, Laziness, and Deferred Execution

Lecture 7 Composing Functions

Lecture 8 The Big O Notation

Lecture 9 Space/Time Trade-Off

Lecture 10 Referential Transparency

Lecture 11 Vectors Versus Lists

Lecture 12 Complexities and Collections

Lecture 13 First Steps

Lecture 14 List Head and Tail

Lecture 15 Drop Elements

Lecture 16 Concatenating Lists

Lecture 17 Persistent Data Structures and Tail Call Optimization

Lecture 18 List Append and Prepend

Lecture 19 Getting the Value at Index

Lecture 20 Modifying a List Value

Lecture 21 Node Definitions

Lecture 22 Building the Tree

Lecture 23 Comparing Trees

Lecture 24 The Accumulator Idiom

Lecture 25 Binary Search Trees

Lecture 26 Binary Numbers

Lecture 27 Greedy Algorithms and Backtracking

Section 2: Advanced Functional Data Structures and Algorithms

Lecture 28 The Course overview

Lecture 29 Reversing a List

Lecture 30 Exploring More About Graph Algorithms

Lecture 31 Cycle Detection

Lecture 32 Incrementing a Binary Number

Lecture 33 List of Tree Roots

Lecture 34 FIFO Queues

Lecture 35 Invariants

Lecture 36 Priority Queue

Lecture 37 Leftist Trees

Lecture 38 Functional Heaps

Lecture 39 Program Evaluation

Lecture 40 Argument Evaluation

Lecture 41 Memoization – Remembering Past Results

Lecture 42 Streams

Lecture 43 Some Algorithms on Stream

Lecture 44 Imperative Implementations and Amortization

Lecture 45 Strict Versus Lazy

Lecture 46 Streams

Lecture 47 Amortized Deques

Lecture 48 Concept of Red-Black Trees

Lecture 49 Working with Red-Black Trees

Lecture 50 Verifying the Transformation

Lecture 51 Binomial Trees

Lecture 52 A Binomial Heap

Lecture 53 Binary Number Equivalence

Lecture 54 Stable and Unstable Sorting

Lecture 55 Bubble Sort

Lecture 56 Selection Sort

Lecture 57 Insertion Sort

Lecture 58 Merge Sort

Lecture 59 Quick Sort

This Learning Path is for developers who have some experience in functional programming language,especially Scala.