Tags
Language
Tags
December 2024
Su Mo Tu We Th Fr Sa
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 31 1 2 3 4

Scala Applied, Part 3

Posted By: ELK1nG
Scala Applied, Part 3

Scala Applied, Part 3
Last updated 3/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 2.24 GB | Duration: 5h 21m

Part 3 of Scala Applied, covering Scala's core libraries

What you'll learn

Use case classes to get lots of free, best practice functionality

Contruct pattern matches like a Scala pro

Create and use PartialFunctions

Create, and manipulate Futures to avoid blocking and write reactive code

Obtain an in-depth grounding in the Scala collections and examine the enormous potential and power in the collections API

Know which collections to use in different circumstances to get desired performance

Use Option types instead of nulls to virtually eliminate NullPointerExceptions

Harness Java libraries effectively and safely, and even improve them in Scala

Know how to mix Java and Scala on a project, if you need to

Build your project using sbt

Write custom tasks and settings in sbt

Requirements

Students should follow and complete the Stairway to Scala Setup Instructions, available for free on Udemy, before starting this course

Students should have completed parts 1 and 2 of Stairway to Scala Applied, or have equivalent skills to having completed those two parts before starting this course

Students will need a laptop or desktop computer with sufficient performance and resources to compile and run the coding exercises

Description

Scala Applied, part 3 is the final part of this Scala programming language course. The course in its entirety is aimed at giving you a full, day-to-day working knowledge of Scala programming, including some of the most common core library APIs.This part starts with a final language feature for Scala (continuing from the other language features covered in parts 1 and 2). Pattern matching, partial functions and case classes are examined, how they can be used together, and how partial functions can help you avoid certain runtime errors by validating input to a function before you call it.Then we delve into the collections API in the core libraries (a very in-depth 2 module examination of the capabilities and performance tradeoffs of the various collection options), and finish up with a look at using Scala on Java projects, using Java libraries from Scala and how to harness build tools (particularly SBT) to build your project and even write custom settings and tasks. Following that we look at the Futures API in the core libraries.This course is also a good lead-in to the Stairway to Scala Advanced 3 part course which concentrates on in-depth language features, higher level functional abstractions, common patterns and idioms, type theory and other more advanced Scala concepts that will be particularly helpful for anyone writing their own libraries and APIs in Scala.

Overview

Section 1: Course Introduction and Exercises

Lecture 1 Download the exercises for this course

Lecture 2 Download Slides and Exercises

Section 2: Module 12 - Pattern Matching

Lecture 3 01 - Module 12 Introduction

Lecture 4 02 - Agenda

Lecture 5 03 - Simple Constant Patterns

Lecture 6 04 - match is an expression

Lecture 7 05 - Variable Loads

Lecture 8 06 - Binding vs Loading

Lecture 9 07 - Case Matters!

Lecture 10 08 - Case Matters Continued!

Lecture 11 09 - Guards

Lecture 12 10 - The Wrong Way to Guard

Lecture 13 11 - Matching Options

Lecture 14 12 - Matching Tuples

Lecture 15 13 - Matching Lists

Lecture 16 14 - Other Collections

Lecture 17 15 - Matching Try

Lecture 18 16 - Case Classes 1

Lecture 19 17 - Case Classes 2

Lecture 20 18 - Case Classes 3

Lecture 21 19 - Compound Pattern Matches

Lecture 22 20 - Typed Pattern Matches

Lecture 23 21 - Beware Type Erasure!

Lecture 24 22 - val and Pattern Matching

Lecture 25 23 - for and Pattern Matching

Lecture 26 24 - Partial Functions and Pattern Matches

Lecture 27 25 - Sealed Class Hierarchies

Lecture 28 26 - Extractors and unapply

Lecture 29 27 - Custom Extractors

Lecture 30 28 - Custom Seq Extractors

Lecture 31 29 - Module 12 Exercises

Section 3: Module 13 - Lists

Lecture 32 01 - Module 13 Introduction

Lecture 33 02 - Agenda

Lecture 34 03 - The Immutable Linked List

Lecture 35 04 - List Properties

Lecture 36 05 - Initializing Lists

Lecture 37 06 - Converting to Lists

Lecture 38 07 - List is Covariant

Lecture 39 08 - Constant Time Operations

Lecture 40 09 - Linear Time Operations

Lecture 41 10 - Operations that Depend on Position

Lecture 42 11 - Higher Order Functions

Lecture 43 12 - Predicate Based Functions

Lecture 44 13 - Folds

Lecture 45 14 - Fold Alternatives

Lecture 46 15 - Sorting

Lecture 47 16 - Even More Functions

Lecture 48 17 - And More

Lecture 49 18 - Permutations and Combinations

Lecture 50 19 - Indices, zip, unzip

Lecture 51 20 - Module 13 Exercises

Section 4: Module 14 - Collections

Lecture 52 01 - Module 14 Introduction

Lecture 53 02 - Agenda

Lecture 54 03 - Other Collections

Lecture 55 04 - Sequences Performance

Lecture 56 05 - Sets and Maps Performance

Lecture 57 06 - LinearSeq vs IndexedSeq

Lecture 58 07 - mutable vs immutable

Lecture 59 08 - Consistent API

Lecture 60 09 - Easy Conversions

Lecture 61 10 - Other Sequences

Lecture 62 11 - The Mighty Vector

Lecture 63 12 - Vector (continued)

Lecture 64 13 - Immutable Sets

Lecture 65 14 - Sorted and Mutable Sets

Lecture 66 15 - Maps

Lecture 67 16 - Sorted and Mutable Maps

Lecture 68 17 - Key and Value Operations

Lecture 69 18 - Immutable Implementations

Lecture 70 19 - Mutable Implementations

Lecture 71 20 - Iterators

Lecture 72 21 - Views

Lecture 73 22 - Streams

Lecture 74 23 - Module 14 Exercises

Section 5: Module 15 - Building Scala, SBT, Java Compatibility

Lecture 75 01 - Module 15 Introduction

Lecture 76 02 - Agenda

Lecture 77 03 - Maven

Lecture 78 04 - Gradle

Lecture 79 05 - Other Options

Lecture 80 06 - SBT

Lecture 81 07 - Using SBT

Lecture 82 08 - SBT Project Source Layout

Lecture 83 09 - build.sbt

Lecture 84 10 - Example build.sbt

Lecture 85 11 - Example plugins.sbt

Lecture 86 12 - Making a Custom Setting

Lecture 87 13 - A Custom Task

Lecture 88 14 - Multiple Project Support

Lecture 89 15 - Mixing Scala and Java

Lecture 90 16 - Scala/Java Compile Cycle

Lecture 91 17 - Calling Java from Scala

Lecture 92 18 - Scala 2.12 and Java 8

Lecture 93 19 - Scala/Java Function Compatibility

Lecture 94 20 - Handling Nulls

Lecture 95 21 - Options to Nulls

Lecture 96 22 - Java -> Scala Collections

Lecture 97 23 - Boxed Types Trouble

Lecture 98 24 - Scala Traits and Java Interfaces

Lecture 99 25 - General Advice

Lecture 100 26 - Module 15 Exercises

Section 6: Module 16 - Futures

Lecture 101 01 - Module 16 Introduction

Lecture 102 02 - Agenda

Lecture 103 03 - Futures

Lecture 104 04 - Creating a Future

Lecture 105 05 - Some Initial Rules

Lecture 106 06 - Future States

Lecture 107 07 - Composing Futures

Lecture 108 08 - Futures with for

Lecture 109 09 - Async Evaluation

Lecture 110 10 - Forcing a Result

Lecture 111 11 - Other Future Operations

Lecture 112 12 - More Operations

Lecture 113 13 - Recovering from Failures

Lecture 114 14 - Dealing with Multiple Futures

Lecture 115 15 - Other Future Sequence Operations

Lecture 116 16 - Promises

Lecture 117 17 - A Broken Promise

Lecture 118 18 - Working with Java's Futures

Lecture 119 19 - Future Patterns - Batching

Lecture 120 20 - foldLeft and flatMap

Lecture 121 21 - Future Patterns - Retrying

Lecture 122 22 - Retrying (naive)

Lecture 123 23 - Retrying (loop)

Lecture 124 24 - Retrying with Back-off

Lecture 125 25 - Retrying with Back-off 2

Lecture 126 26 - Future Alternatives

Anyone wanting to learn the Scala programming language,This is part 3 of a 3 part course, please check you have skills equivalent to parts 1 and 2 before taking this course,We do assume the student has some programming knowledge in a modern programming language other than Scala