Mike Slinn

Intermediate Scala

Published 2014-09-17. Last modified 2024-08-14.

About
Course Outline

This Intermediate Scala course builds on the Introduction to Scala course. Many concepts and techniques are introduced, with lots of working code examples and exercises, including functional programming, implicits, process control, I/O, collections, pattern matching, combinators, partial functions, application configuration techniques, memoization, and multithreading (including parallel collections, Futures, and Promises).

This course hardly mentions Akka and does not discuss actors. Akka started out as an open-source library, but in September 2022, that changed. Actors are a 50-year-old attempt at multitasking that requires an effort similar to writing an asynchronous operating system. Every challenge that actors presents requires you to invest more deeply into this flawed paradigm. Also, actors are untyped, which defeats one of the main advantages of Scala: its advanced type system.

Working through this course will challenge you; and as a result you will gain a lot of practical, hands-on experience with Scala. The concepts taught allow you to feel comfortable with the code that you will find in Apache Spark for Scala projects, and motivational Spark examples are provided in the course.

As with the Introduction to Scala course, this course is based on code samples that can be pasted into the Scala REPL, and that code is also provided in the the courseNotes directory.

We suggest that students work through this course before moving on to Apache Spark or working on other industrial-strength Scala projects.

The overview video on the page of this web site discusses how ScalaCourses.com works.

These lectures were designed to be worked through in order.

This course has 42 lectures.

Implicit Values
Implicit Conversions
Implicit Classes
Process Control
Scala I/O
Parametric Types
Predef
Higher-Order Functions
Collections Overview
Hash Tables
Immutable Collections
Mutable Collections
Arrays and Array-Adjacent Types
Sorting and Ordered Collections
Pattern Matching on Collections
Combinators
Partial Functions
For-Loops and For-Comprehensions
For-Loops and For-Comprehensions Examples
HOCON Configuration
HOCON Exercise and Extended Example
Parametric Variance and Bounds
Structural Types
Partially Applied Functions
Using Partially Applied Functions
Memoization in Depth
MultiThreading
Parallel Collections
Extended Example of For-Comprehensions
Futures & Promises
Getting Results from Futures & Signaling with Promises
Future Callbacks
For-comprehensions With Futures
Future Combinators
Future Bad Habits and Exercise
Collections of Futures
To Converters
scala.jdk Converter Libraries Part 1
scala.jdk Converter Libraries Part 2
Collection Extras
* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.