We may earn an affiliate commission when you visit our partners.
Course image
Daniel Ciocîrlan

Updated for Scala 3. This course is now fully compatible with both Scala 2 and Scala 3.

Read more

Updated for Scala 3. This course is now fully compatible with both Scala 2 and Scala 3.

In this course, we will learn the tricks used by the top 1% of Scala developers. You'll write 2000+ lines of Scala code yourself, with guidance, and you will become a rockstar.

This course is for Scala programmers who need to design complex, scalable systems, or need to customize existing tools (e.g. Spark) or write their own.

Why mastering Scala:

  • it's the hottest language based on the Java Virtual Machine - the number of Scala jobs has exploded, but demand is even higher

  • Scala offers significantly higher pay (> 20%) than same-level Java positions - the top Scala devs are paid 2x, 10x, even more.

  • it's incredibly fun - once tasted Scala, you'll never want to get back

  • you will not have any trouble using some of the latest technologies written in Scala - Spark, Akka and more

I like to get to the point and get things done. This course 

  1. deconstructs advanced Scala concepts into the critical pieces you need

  2. selects the most important ideas in Scala and separates them into the critical and nice-to-have

  3. sequences ideas in a way that "clicks" and makes sense throughout the process of learning

  4. applies everything in live code

The end benefits are still much greater:

  • a completely new level of skill with the Scala language

  • significant bump in salary when you switch to Scala - return on investment for this course >100x in the first year alone.

  • more enjoyable work - Scala is fun.

  • future-proof skills - you'll be able to work with some of the cutting edge technologies (Spark, Akka etc)

This course is for established programmers with experience with Scala and with functional programming at the level of the Rock the JVM Scala beginners course. I already assume a solid understanding of general programming fundamentals. If you've never coded before, this course is not for you.

The course is comprehensive, but you'll always see me get straight to the point. So make sure you have a good level of focus and commitment to become a badass programmer.

I believe both theory and practice are important. That's why you'll get lectures with code examples, real life Scala code demos and assignments, plus additional resources, instructions, exercises and solutions. At the end of the course, you'll have written thousands of lines of Scala.

I've seen that my students are most successful - and my best students work at Google-class companies and committing to Scala repositories - when they're guided, but not being told what to do. I have assignments waiting for you, where I offer my (opinionated) guidance but otherwise freedom to experiment and improve upon your Scala code.

Definitely not least, my students are most successful when they have fun along the way.

So join me in this course and let's rock the JVM.

Enroll now

What's inside

Learning objectives

  • Master the scala language at the level of the best developers
  • Master functional programming
  • Design and implement complex systems, frameworks and apis
  • Confidently customize and enhance existing scala tools
  • Think and approach code with maturity and a deep understanding of implications

Syllabus

Welcome
Welcome! Administrative and Setting up Dev Environment
How to Make the Best Out of This Course
A Taste of Advanced Scala
Read more
Welcome!
Recap: The Scala Basics
Dark Syntax Sugar
Advanced Pattern Matching
Advanced Pattern Matching, Part 2
Master advanced techniques of functional programming, a new way of approaching collections and a few notoriously difficult concepts.
Partial Functions
Functional Collections: A functional Set
Enhancing A Functional Set
A Functional Set, level 9000: A Potentially Infinite Set
Moar Functional Collections!
Currying and Partially Applied Functions
Lazy Evaluation
Lazy Evaluation Exercise: A Potentially Infinite Stream
Infinite Streams Proficiency: More Exercises
Monads
Monads: Exercises
Functional Concurrent Programming
Intro to Parallel Programming on the JVM
Concurrency Problems on the JVM
JVM Thread Communication
Producer-Consumer, Level 2
Producer-Consumer, Level 3 + Excercises
JVM Thread Communication Exercises
Futures and Promises
Futures, Part 2
Futures, Part 3
Futures, Part 4 + Exercises
Implicits
Enter Implicits
Organizing Implicits
Type Classes, Part 1
Type Classes, Part 2
Pimp My Library!
Type Classes, Part 3
A Type Class End-to-End example: JSON Serialization
A Type Class Use Case: The Magnet Pattern
Scala 3: Given Instances and Using Clauses
Scala 3: Extension Methods
Mastering the Type System
Advanced Inheritance
Variance
Variance Exercises
Type Members
Inner Types and Path-Dependent Types
Self Types
Recursive Types and F-Bounded Polymorphism
Higher-Kinded Types
You Rock!

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Taught by Daniel Ciocîrlan, who is recognized for their work in Scala
Examines advanced Scala concepts, which is highly relevant to software development
Develops functional programming and design skills, which are core skills for software engineering
Builds a strong foundation for intermediate Scala learners
Teaches techniques that may add color to other topics and subjects

Save this course

Save Advanced Scala and Functional Programming | Rock the JVM to your list so you can find it easily later:
Save

Reviews summary

Scala and functional programming explained

Students say that this is one of the best Scala courses for intermediate learners. The course is particularly strong in explaining implicits and the Scala type system. Students gave positive remarks about the quality of the instructor, Daniel. They say that he explains concepts clearly and is engaging. One common suggestion from learners is to make the slides available and to include auto-pause when an instructor pauses. Overall, this course is well received by learners and is recommended for those with a basic understanding of Scala who want to advance their knowledge.
Great instructor.
"Daniel is a great (implicit: rocking) instructor."
Clear explanations.
"Having an intermediate level in Scala, I found this course very useful to understand the hardest concepts of this amazing language, notably the implicits and the type system."
Slides and Auto-Pause Needed
"The "takeaways" slides are available somewhere ?"
"It is possible to automatically pause the videos when the instructor wants to pause the videos?"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Advanced Scala and Functional Programming | Rock the JVM with these activities:
Join a Scala Study Group
Collaborate with peers to discuss and solve Scala challenges.
Browse courses on Scala
Show steps
  • Find or create a study group
  • Participate in discussions and ask questions
  • Work together on Scala projects
Complete Practice Problems
Reinforce your understanding of functional programming concepts by solving practice problems.
Browse courses on Functional Programming
Show steps
  • Identify challenging problems
  • Break down problems into smaller steps
  • Apply functional programming techniques to solve problems
Follow Scala Tutorial Series
Enhance your understanding of advanced Scala concepts by following video tutorials.
Show steps
  • Identify relevant tutorials
  • Watch tutorials actively, taking notes
  • Practice coding along with the tutorials
Four other activities
Expand to see all activities and additional details
Show all seven activities
Attend a Scala Workshop
Advance your Scala skills by participating in a hands-on workshop.
Show steps
  • Identify relevant workshops
  • Register and attend a workshop
  • Apply what you learn to your Scala projects
Create a Scala Project
Apply your Scala skills by designing and implementing a project.
Browse courses on Design Patterns
Show steps
  • Define project scope and requirements
  • Design and implement your project using Scala
  • Test and debug your project
Start a Scala Open Source Project
Contribute to the Scala community by starting an open source project.
Browse courses on Open Source
Show steps
  • Identify a project idea and scope
  • Create a project repository
  • Develop and maintain the project
Write a Technical Blog Post
Showcase your knowledge by writing a blog post on an advanced Scala topic.
Show steps
  • Choose a topic and research it thoroughly
  • Write a well-structured blog post
  • Publish your post on a relevant platform

Career center

Learners who complete Advanced Scala and Functional Programming | Rock the JVM will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers are responsible for developing and maintaining software applications. They work on a variety of projects, from enterprise software to mobile apps. This course's comprehensive teachings on advanced Scala will help build a foundation for a successful career as a Software Engineer.
Scala Developer
Scala Developers are responsible for developing and maintaining software applications written in the Scala programming language. They work on a variety of projects, from enterprise software to mobile apps. This course's comprehensive teachings on advanced Scala will help build a foundation for a successful career as a Scala Developer.
Web Developer
Web Developers are responsible for developing and maintaining websites. They work on both the design and implementation of a website. This course's teachings on advanced techniques of functional programming and how to confidently customize and enhance existing Scala tools is particularly relevant and will help build a foundation for a successful Web Developer career.
Data Scientist
Data Scientists use their scientific knowledge and knowledge of programming languages to analyze data in a variety of formats. They create algorithms and models that can be used to improve business processes, understand customer behavior, and forecast future trends. This course's teachings on advanced techniques of functional programming and how to confidently customize and enhance existing Scala tools is particularly relevant and will help build a foundation for a successful Data Scientist career.
Machine Learning Engineer
Machine Learning Engineers develop and implement machine learning models that can be used to automate tasks and improve decision-making. They work on projects such as fraud detection, predictive analytics, and natural language processing. This course's teachings on advanced techniques of functional programming and how to confidently customize and enhance existing Scala tools is particularly relevant and will help build a foundation for a successful Machine Learning Engineer career.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical models to analyze financial data. They use this information to make investment recommendations and develop trading strategies. This course's teachings on advanced techniques of functional programming and how to confidently customize and enhance existing Scala tools is particularly relevant and will help build a foundation for a successful Quantitative Analyst career.
Software Architect
Software Architects design and implement the architecture of software systems. They work on both the design and implementation of an application. This course's teachings on advanced techniques of functional programming and how to confidently customize and enhance existing Scala tools is particularly relevant and will help build a foundation for a successful Software Architect career.
Chief Technology Officer
Chief Technology Officers (CTOs) are responsible for the overall technology strategy of an organization. They work with the CEO and other executives to ensure that the organization's technology investments are aligned with its business goals. This course's comprehensive teachings on advanced Scala, functional programming, and systems analysis will help build a foundation for a successful career as a CTO.
Full Stack Software Engineer
Full-Stack Software Engineers are responsible for both the front-end and back-end of a software application. They work on both the design and implementation of an application. This course may be useful in developing the coding and systems analysis skills needed to excel as a Software Engineer.
Java Developer
Java Developers are responsible for developing and maintaining software applications written in the Java programming language. They work on a variety of projects, from enterprise software to mobile apps. This course's teachings on advanced Scala, a programming language that runs on the Java Virtual Machine, may be useful for a Java Developer seeking to advance their career.
Product Manager
Product Managers are responsible for defining the vision and roadmap for a software product. They work with engineers, designers, and marketers to ensure that the product meets the needs of users. This course may be useful in developing the coding and systems analysis skills needed for a Product Manager role.
Systems Analyst
Systems Analysts work with businesses to analyze their current systems and recommend ways to improve them. They may also be responsible for designing and implementing new systems. This course may be useful in developing the coding and systems analysis skills needed for a Systems Analyst role.
Technical Lead
Technical Leads are responsible for leading a team of engineers in the development of software applications. They work with engineers to ensure that the application is developed on time and within budget. This course may be useful in developing the coding and systems analysis skills needed for a Technical Lead role.
DevOps Engineer
DevOps Engineers bridge the gap between software development and IT operations. They work to ensure that new software is developed and deployed quickly and efficiently. This course may be useful in developing the coding and systems analysis skills needed for a DevOps Engineer role.
Cloud Architect
Cloud Architects implement and manage an organization's cloud computing systems, which store and process large amounts of data. They ensure that these systems are secure, scalable, and efficient. This course can be useful in developing the coding and systems analysis skills needed to excel as a Cloud Architect.

Reading list

We've selected ten books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Advanced Scala and Functional Programming | Rock the JVM.
Provides a comprehensive introduction to functional programming in Scala. It covers the basics of functional programming, such as lambda expressions, higher-order functions, and monads. It also covers more advanced topics, such as type classes and effect systems.
Scala for Machine Learning is written in Scala and provides a practical, problem-focused approach to learning advanced Scala in a real-world context. is best used as a supplementary text to provide practical, real-world use cases.
Comprehensive guide to advanced Scala programming. It covers topics such as type classes, implicits, and macros. It good choice for experienced Scala programmers who want to learn more about the language.
Collection of recipes for solving common Scala programming problems. It covers a wide range of topics, from basic I/O to advanced concurrency. It good choice for Scala programmers of all levels.
Provides a comprehensive overview of the Scala programming language, covering both basic and advanced concepts. It good choice for beginners who want to learn Scala from scratch or for experienced programmers who want to brush up on their skills.
Functional and Reactive Domain Modeling builds on top of functional programming, providing case studies and practical applications of Scala beyond just theoretical knowledge. is best used as an extra reference for practical applications of Scala beyond the scope of this course.
The Joy of Clojure must-read for anyone who wants to get into functional programming. is best read as a way to start learning about functional programming before transitioning to Scala.
Seven Concurrency Models in Seven Weeks is written in Java and provides a high-level overview of programming concurrency. is best used as a way to learn more about concurrency before transitioning to Scala.
Scala for the Impatient is commonly used as an academic text for learning Scala. It provides a comprehensive overview of Scala for beginners and will help supplement the Scala basics covered in this course.
Scala: A Practical Guide for Programmers provides a thorough overview of Scala for programmers new to the language. If needed, this book can help fill gaps in the student's Scala knowledge.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Advanced Scala and Functional Programming | Rock the JVM.
Scala & Functional Programming Essentials | Rock the JVM
Most relevant
Akka Streams with Scala | Rock the JVM
Most relevant
Akka Classic Essentials with Scala
Most relevant
Spark 3.0 & Big Data Essentials with Scala | Rock the JVM
Most relevant
Programming Reactive Systems (Scala 2 version)
Most relevant
Programming Reactive Systems
Most relevant
Apache Spark with Scala - Hands On with Big Data!
Most relevant
Functional Programming Principles in Scala (Scala 2...
Most relevant
Functional Programming Principles in Scala
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser