We may earn an affiliate commission when you visit our partners.
Take this course
Daniel Ciocîrlan

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:

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

Traffic lights

Read about what's good
what should give you pause
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

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Mastering advanced scala and functional programming

According to learners, this course offers a deep dive into advanced Scala concepts and functional programming patterns. Students frequently praise the instructor's clear explanations and the course's structured approach. The hands-on coding exercises and projects are highlighted as particularly effective for solidifying understanding, though some find the difficulty level high. The course is considered highly relevant for professional developers aiming to master advanced techniques and gain proficiency in areas like implicits, type classes, concurrency, and monads. While largely positive, a few learners note that the pace can be fast and requires a solid foundation in prerequisite topics. Recent reviews confirm its update to include Scala 3.
Hands-on tasks reinforce learning but are tough.
"The exercises were challenging but essential for mastering the concepts."
"Some assignments took me a very long time to solve, but the struggle was worth it."
"The hands-on coding is where the real learning happens for these advanced topics."
"I needed to pause and rethink constantly during the coding tasks, which felt rewarding."
Course content includes Scala 3 updates.
"Glad to see the course is fully updated for Scala 3."
"The Scala 3 specific sections were very helpful and well integrated."
"Content works well with both Scala 2 and Scala 3 environments."
"Up-to-date material like this is crucial for learning modern Scala practices."
Highly applicable for professional development.
"This course is invaluable for anyone working with Scala professionally."
"It directly helps in understanding complex Scala libraries like Spark and Akka."
"I can now confidently apply these advanced patterns in my daily job."
"These are essential skills for advancing as a senior Scala developer."
Covers advanced topics thoroughly.
"This course goes deep into advanced Scala features I couldn't find explained elsewhere."
"Excellent coverage of variance, type members, and higher-kinded types."
"I finally understand monads after completing this module."
"It provided the deep understanding needed for writing robust production Scala code."
Instructor explains complex topics well.
"The instructor is fantastic, explaining really tough concepts clearly."
"His explanations for implicits and type classes finally made sense to me."
"Thank you for making advanced functional programming accessible."
"I appreciated how he broke down complex ideas step by step in the lectures."
Needs strong prior Scala/FP foundation.
"You absolutely need the beginner course or equivalent knowledge before taking this."
"I struggled initially as my functional programming base wasn't strong enough for the pace."
"This is definitely not for beginners; the course pace assumes significant prior experience."
"Make sure you're comfortable with intermediate Scala concepts before starting here."

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.
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.
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.
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.
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.
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.
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.
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.
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.
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

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser