Sorting and Searching Algorithms in Scala

Learn functional programming in Scala by implementing sorting and searching algorithms.

4.30 (17 reviews)
Udemy
platform
English
language
Programming Languages
category
155
students
5.5 hours
content
Jul 2018
last update
$44.99
regular price

What you will learn

Understand and implement bubble sort and a functional merge sort

Explore naive string searching and the more advanced KMP algorithm.

Implement a purely functional hash table

Learn about structural searching

Master unbalanced binary and red-black trees and implement both in a functional manner

Understand depth and breadth-first search traversal

Implement an efficient solution for the closest pair problem.

Description

Scala's functional programming features are a boon when it comes to designing easy-to-reason-about systems to curb growing software complexities. In this course, we will learn about many concepts and tools available in the Scala language by implementing, in a functional manner, some sorting and searching algorithms.

Most algorithms are traditionally defined in an imperative manner, typically consisting of repetitions in the form of conditional looping and altering states. Writing these in a functional manner is not always a trivial process. In this course, we will do just that. We will also show how to implement search data structures in a functional and immutable manner. We will look at number sorting, substring searches, hash tables, red black binary trees, and the closest pair algorithm. Along the way, we will talk about bubble sort, merge sort, Knuth-Morris-Pratt string searching, structural sharing in functional data structures, and various problems with immutable data structures. Further, we will explore the classic closest pair algorithm and show how we can solve the problem efficiently in a functional manner.

By the end of the course, you will have gained a thorough knowledge of many functional Scala concepts and will understand these algorithms and data structures.

About the Author

James Cutajar is a software developer with interests in scalable high-performance computing and distributed algorithms. He is also an open source contributor, author, blogger, and tech evangelist. When he is not writing software, he rides his motorbike, surfs, or flies light aircraft. He was born in Malta, lived for almost a decade in London, and is now working in Portugal.

Content

Number Sorting

The Course Overview
Can Sorting Be Functional
Bubble Sort
Bubble Sort Implementation
Merge Sort
Merge Sort Implementation

Substring Searching

What Is Substring Searching
Naive Searching
Naive Searching Implementation
Functional Naive Searching
Knuth Morris Pratt Algorithm
KMP Matching in Scala
KMP Prefix Table in Scala

Hash Tables

Introduction to Hash Tables
Collisions and Hashing
Hash Table API
Mutable Hash Table
Persistent Hash Tables
KMP Matching in Scala

Binary Trees

Introduction to Binary Trees
Immutable Binary Trees
Binary Search Implementation
Binary Insert Implementation
Traversal on Binary Trees
Traversal Implementation
Red Black Tree
Implementing Tree Rotations
Red Black Tree Insert
Implementing Red Black Tree Inserts

Closest Pair

Problem Introduction
Algorithm for 1 Dimension
Implementation for 1 Dimension
Algorithm for 2 Dimensions
2-Dimensional Implementation

Screenshots

Sorting and Searching Algorithms in Scala - Screenshot_01Sorting and Searching Algorithms in Scala - Screenshot_02Sorting and Searching Algorithms in Scala - Screenshot_03Sorting and Searching Algorithms in Scala - Screenshot_04

Reviews

Oleg
September 19, 2022
I've learnt some ideas new to me. The course could benefit from having some assignments so students could have some practice. I think I was able to get the idea for some of the more complicated topics like KMP or Red Black Tree rotations but not sure I could reproduce the solutions, alas.

Charts

Price

Sorting and Searching Algorithms in Scala - Price chart

Rating

Sorting and Searching Algorithms in Scala - Ratings chart

Enrollment distribution

Sorting and Searching Algorithms in Scala - Distribution chart

Related Topics

1781606
udemy ID
7/4/2018
course created date
10/27/2021
course indexed date
Bot
course submited by