Scala Advanced Part 3 Functional Programming Performance

Advanced Functional Programming, Macros, Parser-Combinators, Performance, Profiling, Optimizing
Scala Advanced Part 3 Functional Programming Performance
File Size :
1.72 GB
Total length :
4h 54m

Category

Instructor

Dick Wall

Language

Last update

3/2023

Ratings

4.8/5

Scala Advanced Part 3 Functional Programming Performance

What you’ll learn

Advanced Functional Programming, Tail Calls, Trampolines, Functors, Monads, Applicative Functors, Different Monad Patterns
Macros, Scala Compiler Phases, Abstract Syntax Trees, Quasiquotes, When and how to use macros
Parser Combinators, External DSLs, Grammar Translation, Transformers, Parsing, Packrat Parsers
Performance Optimization, JVM Performance Tricks, Profiling, Visual VM

Scala Advanced Part 3 Functional Programming Performance

Requirements

You should be a developer with day to day working experience of Scala
It is recommended that you complete Parts 1 and 2 of the Escalate Scala Advanced course
You may also wish to consider following parts 1-3 of the Escalate Applied Scala course if you have trouble following these concepts
You will need a sufficiently powerful computer and to follow the included setup instructions to run the hands-on exercises

Description

The Escalate Software Scala Advanced course is intended for experienced Scala developers looking to improve their skills, particularly for library and API design and development. It covers topics needed to be effective in producing high quality, correct, powerful and flexible Scala libraries that are still easy to use by others.This course assumes you have day-to-day Scala development skills equivalent to having taken the Scala Advanced course parts  1  and 2 from Escalate Software. If you have trouble understanding or following the concepts in this course because some of the concepts being presented are assuming something you are unfamiliar with, then we would recommend you check out the Applied courses as these will answer many of your questions.Part 3 covers advanced functional programming concepts and patterns, use of Macros, how to write external DSLs with the parser-combinator library, and how to effectively optimize code by analyzing performance:Functional Programming Building Blocks: ADTs, trampolines, recursion, functionsFunctional Programming Patterns: Functors, Monads, Applicative FunctorsCommon Functional Patterns: IO, Reader, Writer, State, FreeMacros and QuasiquotesExternal DSLs and Scala’s Parser-Combinator LibraryProfiling and OptimizationCode Performance ConsiderationsIt is recommended that you complete Scala Advanced parts 1 and 2 before taking this part. While not strictly necessary, we may assume knowledge from parts 1 and 2 in some of the explanations that could be hard to follow unless you know the material.This is the final part of the Advanced Scala course. We hope you enjoyed the course and that the material proves useful.

Overview

Section 1: Setup Instructions

Lecture 1 Introduction

Section 2: Module 12 – FP part 1, Tail Calls, Trampolines, ADTs

Lecture 2 Module 12 – 01 – Introduction

Lecture 3 Module 12 – 02 – Agenda

Lecture 4 Module 12 – 03 – Recursion vs Loops

Lecture 5 Module 12 – 04 – Recursive Factorial

Lecture 6 Module 12 – 05 – Tail Recursive Factorial

Lecture 7 Module 12 – 06 – Puzzler – Fibonacci

Lecture 8 Module 12 – 07 – Mutual Calling Functions

Lecture 9 Module 12 – 08 – Recursive Even/Odd

Lecture 10 Module 12 – 09 – ADTs Recap

Lecture 11 Module 12 – 10 – First Trampoline

Lecture 12 Module 12 – 11 – Even/Odd Trampoline

Lecture 13 Module 12 – 12 – Using Trampolines

Lecture 14 Module 12 – 13 – Scala TailCalls

Lecture 15 Module 12 – 14 – Higher Order Functions Recap

Section 3: Module 13 – Functors, Monads, Applicative Functors

Lecture 16 Module 13 – 01 – Introduction

Lecture 17 Module 13 – 02 – Agenda

Lecture 18 Module 13 – 03 – Options Recap

Lecture 19 Module 13 – 04 – Implementing Option

Lecture 20 Module 13 – 05 – A Functor

Lecture 21 Module 13 – 06 – A Monad

Lecture 22 Module 13 – 07 – Optional In Use

Lecture 23 Module 13 – 08 – Guards, withFilter

Lecture 24 Module 13 – 09 – Testing the Guard

Lecture 25 Module 13 – 10 – Functor Laws

Lecture 26 Module 13 – 11 – Monad Laws

Lecture 27 Module 13 – 12 – Applicative Functors

Lecture 28 Module 13 – 13 – Applicative Functors with Functions

Lecture 29 Module 13 – 14 – Cartesian Syntax and Alternatives

Lecture 30 Module 13 – 15 – Functor/Monad Patterns

Lecture 31 Module 13 – 16 – IO

Lecture 32 Module 13 – 17 – Composing IO

Lecture 33 Module 13 – 18 – Reader

Lecture 34 Module 13 – 19 – Writer

Lecture 35 Module 13 – 20 – State

Lecture 36 Module 13 – 21 – Free

Lecture 37 Module 13 – 22 – Free ADT

Lecture 38 Module 13 – 23 – Free Composition

Lecture 39 Module 13 – 24 – Free – A Full Program

Lecture 40 Module 13 – 25 – Free, the Interpreter

Lecture 41 Module 13 – 26 – Running Free

Section 4: Module 14 – Macros

Lecture 42 Module 14 – 01 – Introduction

Lecture 43 Module 14 – 02 – Agenda

Lecture 44 Module 14 – 03 – First Rule of Macros

Lecture 45 Module 14 – 04 – Scala Compiler Phases

Lecture 46 Module 14 – 05 – Abstract Syntax Trees

Lecture 47 Module 14 – 06 – Macro Overview

Lecture 48 Module 14 – 07 – A Demo Macro

Lecture 49 Module 14 – 08 – Setting Up the Pieces

Lecture 50 Module 14 – 09 – A Macro That Does Nothing

Lecture 51 Module 14 – 10 – Macro With Generic Type Parameters

Lecture 52 Module 14 – 11 – Quasiquotes

Lecture 53 Module 14 – 12 – Doing More with Quasiquotes

Lecture 54 Module 14 – 13 – A Function Describing Macro

Lecture 55 Module 14 – 14 – Narrowing the Return Type

Lecture 56 Module 14 – 15 – Compiler Warnings and Errors

Lecture 57 Module 14 – 16 – Creating a Compiler Warning

Lecture 58 Module 14 – 17 – Macro Limitations

Lecture 59 Module 14 – 18 – Final Words

Section 5: Module 15 – Parser Combinators

Lecture 60 Module 15 – 01 – Introduction

Lecture 61 Module 15 – 02 – Agenda

Lecture 62 Module 15 – 03 – External DSLs

Lecture 63 Module 15 – 04 – A Basic Grammar

Lecture 64 Module 15 – 05 – Simple Parser Combinators

Lecture 65 Module 15 – 06 – Token Parsers

Lecture 66 Module 15 – 07 – Types and Transformers

Lecture 67 Module 15 – 08 – Richer Types

Lecture 68 Module 15 – 09 – StatementLine ADT

Lecture 69 Module 15 – 10 – Next and Goto

Lecture 70 Module 15 – 11 – BNF Translation

Lecture 71 Module 15 – 12 – The Print Statement

Lecture 72 Module 15 – 13 – The For Statement

Lecture 73 Module 15 – 14 – Complete Line, and Parsing

Lecture 74 Module 15 – 15 – Trying It Out

Lecture 75 Module 15 – 16 – Packrat Parsers

Section 6: Module 16 – Performance and Optimization

Lecture 76 Module 16 – 01 – Introduction

Lecture 77 Module 16 – 02 – Agenda

Lecture 78 Module 16 – 03 – When and Where to Optimize

Lecture 79 Module 16 – 04 – First Things First

Lecture 80 Module 16 – 05 – Collections

Lecture 81 Module 16 – 06 – Vector vs List

Lecture 82 Module 16 – 07 – List Head vs Tail Operations

Lecture 83 Module 16 – 08 – Arrays

Lecture 84 Module 16 – 09 – Register Based Arithmetic

Lecture 85 Module 16 – 10 – Timing Runs

Lecture 86 Module 16 – 11 – Bitwise Operations

Lecture 87 Module 16 – 12 – While Loops and Tail Calls

Lecture 88 Module 16 – 13 – While vs TailRec

Lecture 89 Module 16 – 14 – Library Calls

Lecture 90 Module 16 – 15 – sqrt, Trancendentals

Lecture 91 Module 16 – 16 – Other Performance Gotchas

Lecture 92 Module 16 – 17 – Find the Hot Spots

Lecture 93 Module 16 – 18 – VisualVM

Lecture 94 Module 16 – 19 – Using VisualVM

Lecture 95 Module 16 – 20 – Profiling Demo

Lecture 96 Module 16 – 21 – Caching

Scala developers looking to improve their skills, write libraries and APIs for others,Developers wanting to improve their knowledge of more advanced functional programming concepts,Developers wishing to learn how to save time and money by profiling and optimizing applications,Anyone who wants to be able to parse and use external DSLs in Scala

Course Information:

Udemy | English | 4h 54m | 1.72 GB
Created by: Dick Wall

You Can See More Courses in the Developer >> Greetings from CourseDown.com

New Courses

Scroll to Top