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 basics of Scala and functional programming, two highly in-demand topics in software industry today. Write 3000+ lines of Scala code yourself, with guidance, through 100+ examples and exercises.

Why Scala:

  • it's currently 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

  • it's incredibly fun - if you learn Scala, you'll hardly want to get back

  • it unlocks the doors to some of the latest technologies - Spark, Akka and more

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

  1. deconstructs Scala - which is otherwise hard to learn - into the critical pieces you need

  2. selects the most important Scala concepts and separates them into what's simple but critical and what's powerful

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

  4. applies everything in live Scala code

The end benefits are still much greater:

  • 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 otherwise no experience with Scala language or little to no experience with functional programming. I already assume a solid understanding of general programming fundamentals. If you've never coded before, this course is likely 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.

I've seen that my students are most successful - and my best students work at Google-class companies - 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 with Scala.

Enroll now

What's inside

Learning objectives

  • Understand scala code in production environments or open-source projects
  • Think code differently with functional programming
  • Write applications in scala from scratch
  • Contribute to products and open-source projects written in scala
  • Skills to start developing with powerful tools on top of scala: spark, akka, play

Syllabus

Welcome
Getting Started!
Here you will learn how Scala code is structured, how values and variables work, you'll meet Scala's smart type inference system and you'll be able to write functions and various expressions.
Read more
Values, Variables and Types
Expressions
Functions
Type Inference
Recursion
Call-by-Name and Call-by-Value
Default and Named Arguments
Smart Operations on Strings
Object-Oriented Programming in Scala
Object-Oriented Basics
Object-Oriented Basics (exercises)
Syntactic Sugar: Method Notations
Method Notations (Exercises)
Scala Objects
Inheritance
Inheritance, Continued: Abstract Classes and Traits
Inheritance Exercises: Implementing Our Own Collection
Generics
Anonymous Classes
Object-Oriented Exercises: Expanding Our Collection
Case Classes
Scala 3: Enums
Exceptions
Packaging and Imports
Functional Programming in Scala
What's a Function, Really?
Anonymous Functions
Higher-Order-Functions and Curries
HOFs and Curries (Exercises)
map, flatMap, filter and for-comprehensions
A Collections Overview
Sequences: List, Array, Vector
Tuples and Maps
Tuples and Maps (Exercises)
Options
Handling Failure
Pattern Matching
ALL the Patterns!
Patterns Everywhere
Scala 3: Braceless Syntax
You rock!
What's next

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches the fundamentals of Scala and functional programming, which are in high demand in the tech industry
Provides over 100 examples and exercises for hands-on practice
Taught by Daniel Ciocîrlan, an established Scala expert
Covers a wide range of topics from basic syntax to advanced functional programming concepts
Suitable for experienced programmers with no prior Scala or functional programming experience
Provides guidance through assignments, but also encourages experimentation and improvement

Save this course

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

Reviews summary

Scala deep dive with engaging lectures

Learners say the engaging lectures and detailed content in this highly recommended course help them to understand all aspects of Scala. Note that a few learners found the pacing to be quite fast at times.
Every aspect of Scala is covered in detail.
"Awesome course!"
"covers every aspect in detail."
Pace of the course is quite fast.
"Sometimes I find it's going too fast."

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 Scala & Functional Programming Essentials | Rock the JVM with these activities:
Programming in Scala, 4th Edition
Gain a comprehensive understanding of Scala from an authoritative source.
Show steps
  • Read key chapters on Scala's core concepts, functional programming, and object-oriented programming.
  • Complete practice exercises to reinforce your understanding.
Connect with Scala Experts
Seek guidance and advice from experienced Scala developers.
Show steps
  • Attend meetups or online events to connect with Scala professionals.
  • Reach out to former colleagues or classmates who have Scala experience.
  • Join online communities and forums dedicated to Scala.
Scala Coding Exercises
Gain familiarity with Scala syntax and problem-solving techniques.
Show steps
  • Solve coding challenges on platforms like LeetCode or HackerRank.
  • Participate in coding sprints to improve coding speed and accuracy.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Scala Tutorial Series
Follow structured tutorials to reinforce course concepts and expand your knowledge.
Show steps
  • Enroll in online tutorials or MOOCs.
  • Follow along with the tutorials and complete the accompanying exercises.
  • Ask questions in forums or discussion groups to clarify any doubts.
Scala Study Group
Engage with peers to discuss course concepts, share knowledge, and support each other.
Show steps
  • Form or join a study group with other course participants.
  • Meet regularly to discuss course content, assignments, and projects.
  • Work together to solve problems and learn from each other.
Scala Project
Develop a practical understanding of Scala by building a project.
Show steps
  • Design and plan your project based on course concepts.
  • Implement your project using Scala.
  • Test and debug your project thoroughly.
  • Share your project on platforms like GitHub or Kaggle.
Scala Coding Competition
Challenge your skills and stay motivated by participating in coding competitions.
Show steps
  • Identify and register for Scala-focused hackathons or coding challenges.
  • Team up with others or participate individually.
  • Solve coding problems and develop innovative solutions.
  • Attend the awards ceremony or showcase your project.

Career center

Learners who complete Scala & Functional Programming Essentials | Rock the JVM will develop knowledge and skills that may be useful to these careers:
Data Engineer
As a Data Engineer with expertise in Scala and functional programming, you will be responsible for designing and building data pipelines. The course will help you understand the principles of functional programming and how to apply them to data engineering. You will also learn how to use Scala tools and technologies, such as Apache Spark and Hadoop, to build and deploy data pipelines. With these skills, you will be able to work on a variety of data engineering projects and build a successful career as a Data Engineer.
Machine Learning Engineer
As a Machine Learning Engineer with a background in Scala and functional programming, you will be able to develop and implement machine learning models. The course will help you understand the principles of functional programming and how to apply them to machine learning algorithms. You will also learn how to use Scala libraries for machine learning, such as Apache Spark and MLlib. With these skills, you will be able to build and deploy machine learning models that solve real-world problems.
Software Architect
As a Software Architect with expertise in Scala and functional programming, you will be responsible for designing and developing software systems. The course will help you understand the principles of functional programming and how to apply them to software design. You will also learn how to use Scala's features, such as immutability and type safety, to build robust and scalable software systems. With these skills, you will be able to lead software development teams and design complex software systems that meet the needs of your clients.
Full-Stack Developer
As a Full Stack Developer with a background in Scala and functional programming, you will be able to develop both the front-end and back-end of web applications. The course will help you understand the principles of functional programming and how to apply them to web development. You will also learn how to use Scala frameworks, such as Play Framework and Akka, to build scalable and efficient web applications. With these skills, you will be able to work on a variety of web development projects and build a successful career as a Full Stack Developer.
Mobile Developer
As a Mobile Developer with expertise in Scala and functional programming, you will be able to develop mobile applications for both iOS and Android devices. The course will help you understand the principles of functional programming and how to apply them to mobile development. You will also learn how to use Scala libraries and frameworks, such as Scalamo and Ktor, to build scalable and efficient mobile applications. With these skills, you will be able to work on a variety of mobile development projects and build a successful career as a Mobile Developer.
Software Engineer
As a Software Engineer with a background in Scala and functional programming, you will be responsible for designing, developing, and maintaining software applications. The skills you gain from this course will help you understand the intricacies of Scala code in production environments, think differently about code with functional programming, and write applications in Scala from scratch. With these skills, you will be able to contribute effectively to software development projects and advance your career as a Software Engineer.
Web Developer
As a Web Developer with a background in Scala and functional programming, you will be able to develop both the front-end and back-end of websites. The course will help you understand the principles of functional programming and how to apply them to web development. You will also learn how to use Scala libraries and frameworks, such as Play Framework and Akka, to build scalable and efficient websites. With these skills, you will be able to work on a variety of web development projects and build a successful career as a Web Developer.
DevOps Engineer
As a DevOps Engineer with knowledge of Scala and functional programming, you will be responsible for bridging the gap between development and operations. The course will help you understand the principles of functional programming and how to apply them to DevOps. You will also learn how to use Scala tools and technologies, such as Jenkins and Docker, to build and deploy software systems. With these skills, you will be able to work on a variety of DevOps projects and build a successful career as a DevOps Engineer.
Cloud Engineer
As a Cloud Engineer with expertise in Scala and functional programming, you will be responsible for designing and managing cloud computing systems. The course will help you understand the principles of functional programming and how to apply them to cloud computing. You will also learn how to use Scala tools and technologies, such as AWS and Azure, to build and deploy cloud-based applications. With these skills, you will be able to work on a variety of cloud computing projects and build a successful career as a Cloud Engineer.
Systems Analyst
As a Systems Analyst with expertise in Scala and functional programming, you will be responsible for analyzing and designing computer systems. The course will help you understand the principles of functional programming and how to apply them to systems analysis and design. You will also learn how to use Scala tools and technologies to build and deploy software systems. With these skills, you will be able to work on a variety of systems analysis and design projects and build a successful career as a Systems Analyst.
Data Scientist
As a Data Scientist with knowledge of Scala and functional programming, you will be able to collect, analyze, and interpret data to solve business problems. The course will help you develop the skills to work with big data tools and technologies, such as Apache Spark and Hadoop. You will also learn how to use functional programming techniques to analyze data and build predictive models. These skills are in high demand in the data science industry, and this course will help you build a strong foundation for a successful career as a Data Scientist.
Game Developer
As a Game Developer with knowledge of Scala and functional programming, you will be able to develop video games for a variety of platforms. The course will help you understand the principles of functional programming and how to apply them to game development. You will also learn how to use Scala libraries and frameworks, such as Slick and Libgdx, to build scalable and efficient video games. With these skills, you will be able to work on a variety of game development projects and build a successful career as a Game Developer.
Data Analyst
As a Data Analyst with knowledge of Scala and functional programming, you will be able to analyze large datasets and extract meaningful insights. The course will help you build a foundation in Scala, enabling you to work with big data tools and technologies. You will also learn how to think critically and solve problems using functional programming techniques, which are essential skills for a successful Data Analyst.
Database Administrator
As a Database Administrator with knowledge of Scala and functional programming, you will be responsible for managing and maintaining databases. The course will help you understand the principles of functional programming and how to apply them to database management. You will also learn how to use Scala libraries for database management, such as Slick and Doobie. With these skills, you will be able to work with a variety of databases and build a successful career as a Database Administrator.
Technical Writer
As a Technical Writer with knowledge of Scala and functional programming, you will be responsible for writing clear and concise technical documentation. The course will help you understand the principles of functional programming and how to explain them to a non-technical audience. You will also learn how to use Scala tools and technologies to create technical documentation. With these skills, you will be able to work on a variety of technical writing projects and build a successful career as a Technical Writer.

Reading list

We've selected six 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 Scala & Functional Programming Essentials | Rock the JVM.
A great book for getting started with Scala. It covers the basics of the language in a clear and concise way, and it's also a good reference for more experienced Scala programmers.
A book that teaches how to use Scala for web development. It covers topics such as Play Framework, Akka HTTP, and WebSockets.
Provides a comprehensive overview of functional programming in Scala, covering topics such as lambda expressions, higher-order functions, and monads.
Provides a collection of recipes and solutions for common Scala programming problems, making it a useful reference for Scala developers of all levels.
Covers the basics of Scala and functional programming to help readers get started with Scala quickly.

Share

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

Similar courses

Here are nine courses similar to Scala & Functional Programming Essentials | Rock the JVM.
Akka Streams with Scala | Rock the JVM
Most relevant
Akka Classic Essentials with Scala
Most relevant
Advanced Scala and Functional Programming | Rock the JVM
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
Functional Programming Principles in Scala (Scala 2...
Most relevant
Functional Programming Principles in Scala
Most relevant
Scala 2: The Big Picture
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