Advanced Scala & Functional Programming

Become a true Scala rockstar. Master multithreading, implicits, advanced functional programming and Scala's phenomenal type system.


Become a pro.

At this point, I don't need to pitch Scala to you. You've seen it in action, you know the basics, and I'm willing to bet you like it at least a bit.

Perhaps you want to contribute to a bigger project, or need to write your own libraries at work so you can reuse them for a large system. Maybe you need to dive deep into a complex codebase or into a massive framework like Akka or Spark, but the internal code looks overwhelming.

This course is for you. The course is for the Scala programmer who understands the essentials and wants to level up.

After this course, you'll be able to:

  • read any Scala code in any codebase, in any project, no matter how big, difficult or obscure
  • contribute to any Scala project of any scale
  • confidently write your own Scala libraries
  • easily browse through the implementations of existing libraries without confusion
  • work with concurrent JVM applications written in Scala
  • apply advanced functional concepts, including partial functions, lazy evaluation and monads
  • work with infinite collections
  • understand Scala's implicits mechanism, including your power and responsibility
  • master Scala's unparalleled type system
  • use the Scala compiler to your advantage

Skills you'll get:

  • Advanced Scala as a language
    • use alternative syntax and syntax sugars with ease
    • create your own pattern matching patterns
  • Advanced functional programming skills
    • partial functions & partially applied functions
    • infinite, property-based collections
    • lazy evaluation
    • infinite lazy collections
    • monads
  • Parallel & concurrent functional programming
    • understanding the JVM threading model
    • Futures
    • Promises
    • solving concurrency issues
    • parallel collections
  • Mastering the implicits mechanism
    • implicit methods
    • implicits arguments
    • implicit classes
    • implicit conversion techniques, which is better and when
    • type classes
    • the "magnet" pattern
    • "pimping" a library (also known as the more boring "type enrichment")
    • Scala <> Java conversions
  • Mastering the Scala type system
    • deeply understanding why Scala multi-inheritance is solid
    • correctly applying variance (which 99% of Scala programmers can't... because they don't understand it)
    • applying self types and the layered "cake" pattern
    • using higher-kinded types for generic libraries
    • imposing type restrictions with recursive types and the academically-fancy-but-common-sense F-bounded polymorphism
    • circumventing types at runtime with reflection

all with live runnable examples and practiced with exercises.

Plus some extra perks:

  • You'll have access to the entire code I write on camera (2000+ LOC)
  • You'll be invited to our private Slack room where I'll share latest updates, discounts, talks, conferences, and recruitment opportunities
  • You'll have access to the takeaway slides
  • (soon) You'll be able to download the videos for your offline view

Course Overview

Available in days
days after you enroll
Available in days
days after you enroll

Your Instructor

Daniel Ciocîrlan
Daniel Ciocîrlan

I'm a software engineer and the founder of Rock the JVM. I started the Rock the JVM project out of love for Scala and the technologies it powers - they are all amazing tools and I want to share as much of my experience with them as I can.

As of February 2021, I've taught a variety of Computer Science topics to 34000+ students at various levels and I've held live trainings for some of the best companies in the industry, including Adobe and Apple. I've also taught university students who now work at Google and Facebook (among others), I've held Hour of Code for 7-year-olds and I've taught 18000 kids to code.

I have a Master's Degree in Computer Science and I wrote my Bachelor and Master theses on Quantum Computation. Before starting to learn programming, I won medals at international Physics competitions.


Frequently Asked Questions

How long is the course? Will I have time for it?
The course is ~14 hours in length, with lectures 15-25 minutes each. I recommend at least 1 hour of focussed learning at one time.
How is a typical lesson like?
Code is king, and we write it from scratch. In a typical lesson I'll explain some concepts, either briefly on a diagram or directly in the code. We then run live examples, and usually I'll finish the lesson with some exercises, which I then solve on camera after you've tried them yourself.
Can I expense this at my company?
Of course! You'll get a detailed receipt with your purchase, including VAT (if applicable to you), which you can take to your employer to reimburse. Most (wise) companies will reimburse courses like this.
Is the course hard?
Not if you've taken the beginners course or you have at least a year of Scala experience. I've designed the course to give you a challenge, but not too much that it becomes frustrating. In case you struggle with something, we have a whole group on Slack for discussions, and I'm responsive.
What if I don't like the course?
Then I want to give your money back. Email me at [email protected] with your receipt, and I will refund you. Less than 1% of the Rock the JVM students have refunded a course, and the refund took less than 72 hours.
I've just started with Scala. Should I take this course?
I won't recommend it - the concepts here will probably crush you if you don't have a solid foundation. Take a look at the beginners course, or come back here once you have at least a year of Scala experience.
I'm an advanced Scala user. Should I take this course?
Even if I don't know your exact experience, I'm willing to bet there are at least a few things here that will leave you "huh, I didn't know that.".