We may earn an affiliate commission when you visit our partners.
Course image
Julien Richard-Foy and Noel Welsh

Scala is an expressive, versatile, and safe programming language.

In this course, you will learn how to get the most out of Scala to solve common programming tasks such as modeling business domains, breaking down complex problems into simpler problems, manipulating data, or running parallel tasks.

Along the journey, you will also learn the best practices for writing high-quality code that scales to large applications, how to handle errors, how to write tests, and how to leverage a productive development environment.

Read more

Scala is an expressive, versatile, and safe programming language.

In this course, you will learn how to get the most out of Scala to solve common programming tasks such as modeling business domains, breaking down complex problems into simpler problems, manipulating data, or running parallel tasks.

Along the journey, you will also learn the best practices for writing high-quality code that scales to large applications, how to handle errors, how to write tests, and how to leverage a productive development environment.

This comprehensive, hands-on, course aims at leveling up your programming skills by embracing both functional programming and object-oriented programming. You will become familiar with the standard library and the common patterns of code used in the real world.

Each week contains about 1h30 of video lectures. Each lecture is a ~10 min video focused on a specific skill or concept. We always start by looking at concrete problems, and then explain how language features or libraries make you more productive to solve these problems in general.

Lectures are generally followed by a quiz to assess your progress. At the end of each week, a graded assignment inspired by real-world applications will give you an opportunity to put things in practice.

The course covers Scala 3, and it mentions the differences with Scala 2.

Enroll now

What's inside

Syllabus

Getting Started, Basics, Domain Modeling
First, get up and running with Scala on your computer. Then, learn how to write and evaluate basic expressions and definitions. Last, learn how to model a business domain by defining case classes and sealed traits.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Teaches core programming skills in Java Virtual Machine
Teaches in-demand skills
Develops expertise in Scala coding
Covers wholesome concepts of Scala functional programming and object-oriented programming
Suitable for beginners to build fundamental knowledge
Provides regular quizzes for clear assessment of understanding
Incorporates real-world applications in assignments for practical learning
May require prior knowledge or experience in coding

Save this course

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

Reviews summary

Effective scala for professional programmers

According to learners, Effective Programming in Scala is a highly valuable course for professional developers looking to master the language. Students consistently praise the instructor's clear explanations and the challenging, real-world inspired assignments that effectively solidify understanding. While the course provides a strong foundation in both functional and object-oriented programming, covering topics like error handling and concurrent programming, some find its pace quite fast. It is best suited for those with existing programming experience who aim to write high-quality, scalable Scala code.
Covers essential Scala topics for modern development.
"Overall, a very solid introduction to Scala 3. The lectures are well-structured and cover relevant topics."
"The topics covered are highly relevant for modern Scala development. I appreciated the distinction between Scala 2 and Scala 3 features."
"I now feel much more confident writing Scala code for production after completing this course."
"I learned so much about reasoning about code, testing techniques, and leveraging the standard library."
Complex Scala concepts are made clear by the expert instructor.
"The instructor, Martin Odersky, makes complex Scala concepts incredibly clear and easy to understand."
"The instructor's expertise shines through every lecture. The way complex topics are broken down into digestible ~10 min videos is brilliant."
"The explanations are always concise, which helps greatly."
Features challenging, real-world assignments that solidify learning.
"The hands-on assignments are challenging but very rewarding, truly solidifying the learned material."
"The graded assignments are excellent and really push you to apply what you've learned."
"As a professional developer, the real-world assignment examples are incredibly valuable."
Some quizzes felt basic; setup guidance could be better.
"My only minor gripe is that sometimes the quizzes felt a little too basic compared to the complexity of the assignments."
"I wish there was more guidance on setting up the development environment initially, as I ran into some issues."
Requires strong programming foundation; moves at a fast pace.
"If you're not already familiar with functional programming paradigms, you might struggle. It's definitely for experienced programmers, not total beginners."
"I came into this with some Java experience but found it extremely difficult to follow. The jumps between concepts felt too large..."
"The content itself is good, but I found the pace quite fast, especially in later weeks. It assumes a lot of prior knowledge."
"This course presumes a certain level of comfort with advanced programming concepts and functional thinking."

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 Effective Programming in Scala with these activities:
Review Scala Course Materials
Revisit the course materials to solidify your understanding of the core concepts and techniques of Scala.
Show steps
  • Gather course materials, including notes, slides, and assignments.
  • Review the materials, focusing on key concepts and areas where you need reinforcement.
  • Complete any review exercises or assignments.
  • Summarize the main takeaways and note any areas for further exploration.
Join a Scala Study Group
Connect with fellow Scala learners to exchange knowledge, collaborate on projects, and reinforce your understanding.
Show steps
  • Identify or create a Scala study group.
  • Set regular meeting times and agendas.
  • Discuss Scala concepts, share resources, and work on projects together.
  • Provide feedback and support to other group members.
Follow Scala Tutorials
Expand your knowledge and skills by following guided tutorials that cover various aspects of Scala.
Show steps
  • Identify a specific Scala topic you want to learn.
  • Find a reputable tutorial or course that covers the topic.
  • Follow the tutorial step-by-step, completing any exercises or examples.
  • Repeat for other Scala topics.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Attend Scala Workshop
Enhance your Scala knowledge and skills by attending a workshop led by experienced Scala developers.
Show steps
  • Research and find a reputable Scala workshop.
  • Register for the workshop.
  • Attend the workshop and actively participate.
  • Follow up with the workshop organizers or instructors for additional resources.
Complete Scala Exercises
Strengthen your understanding of Scala syntax and core concepts by working through a series of exercises.
Show steps
  • Study the exercise prompt carefully.
  • Attempt to solve the exercise on your own.
  • Review the solution and compare your approach.
  • Repeat for additional exercises.
Read Scala in Depth
Gain a comprehensive understanding of Scala's inner workings and advanced concepts by reading this in-depth book.
Show steps
  • Read through each chapter thoroughly.
  • Make notes of key concepts and techniques.
  • Complete the exercises and examples provided in the book.
  • Discuss the book's content with fellow learners or online forums.
Build a Scala Project
Apply your Scala skills by building a practical project that demonstrates your understanding of the language.
Show steps
  • Identify a problem or idea you want to solve using Scala.
  • Design and plan the architecture of your project.
  • Write the Scala code for your project.
  • Test and debug your project thoroughly.
  • Document your project and share it with others.
Participate in Scala Coding Competition
Test your Scala skills and knowledge by participating in a coding competition, showcasing your ability to solve complex problems.
Show steps
  • Find a suitable Scala coding competition.
  • Study and prepare for the competition.
  • Participate in the competition and attempt the challenges.
  • Review your performance and identify areas for improvement.

Career center

Learners who complete Effective Programming in Scala will develop knowledge and skills that may be useful to these careers:
Computer Scientist
A Computer Scientist researches and develops new computing technologies. This course may be useful for Computer Scientists who want to learn Scala to explore advanced programming concepts and techniques. Scala's support for functional programming, object-oriented programming, and concurrency make it an excellent choice for computer science research.
Cloud Architect
A Cloud Architect designs and manages cloud computing infrastructure. This course may be useful for Cloud Architects who want to learn Scala to build and manage cloud-based applications. Scala's support for concurrency and its powerful libraries make it an excellent choice for cloud computing.
Mobile Developer
A Mobile Developer designs and develops mobile applications. This course may be useful for Mobile Developers who want to learn Scala to build native mobile applications for Android and iOS. Scala's cross-platform capabilities and its support for mobile frameworks make it an excellent choice for mobile development.
Software Architect
A Software Architect designs and oversees the development of software systems. This course may be useful for Software Architects who want to learn Scala to build robust and scalable software systems. Scala's strong typing system, support for functional programming, and powerful libraries make it an excellent choice for software architecture.
DevOps Engineer
A DevOps Engineer automates and manages the software development lifecycle. This course may be useful for DevOps Engineers who want to learn Scala to build and manage CI/CD pipelines. Scala's support for concurrency and its powerful libraries make it an excellent choice for DevOps tasks.
Backend Developer
A Backend Developer designs and develops the server-side logic of web applications. This course may be useful for Backend Developers who want to learn Scala to build robust and scalable backend systems. Scala's support for concurrency and its type-safe nature make it an excellent choice for developing backend services.
Machine Learning Engineer
A Machine Learning Engineer designs, builds, and maintains machine learning models. This course may be useful for Machine Learning Engineers who want to learn Scala to build and deploy machine learning models. Scala's support for parallel programming and its powerful libraries make it an excellent choice for machine learning.
Big Data Engineer
A Big Data Engineer designs and manages big data systems. This course may be useful for Big Data Engineers who want to learn Scala to handle and process large datasets. Scala's parallel programming capabilities and its豊富なライブラリ makes it an efficient language for big data processing.
Full-Stack Developer
A Full Stack Developer designs and develops both the front-end and back-end of web applications. This course may be useful for Full Stack Developers who want to learn Scala to build robust and scalable web applications. Scala's support for functional programming and its powerful web frameworks make it an excellent choice for full stack development.
Web Developer
A Web Developer designs and develops websites and web applications. This course may be useful for Web Developers who want to learn Scala to build dynamic and interactive web applications. Scala's support for functional programming and its powerful web frameworks make it an excellent choice for web development.
Data Engineer
A Data Engineer designs, builds, and maintains data pipelines. This course may be useful for Data Engineers who want to learn Scala to handle and process large datasets. Scala's parallel programming capabilities and its豊富なライブラリ makes it an efficient language for data-intensive tasks.
Quantitative Analyst
A Quantitative Analyst uses mathematical and statistical models to analyze financial data. This course may be useful for Quantitative Analysts who want to learn Scala to build and automate financial models. Scala's support for parallel programming and its powerful libraries make it an excellent choice for quantitative finance.
Game Developer
A Game Developer designs and develops video games. This course may be useful for Game Developers who want to learn Scala to build high-performance and scalable game engines. Scala's support for concurrency and its powerful libraries make it an excellent choice for game development.
Software Engineer
A Software Engineer designs, develops, and maintains software applications. This course may be useful for Software Engineers who want to learn Scala to build robust and scalable applications. Scala's strong typing system, support for functional programming, and powerful libraries make it an excellent choice for developing complex software systems.
Data Scientist
A Data Scientist analyzes and interprets data to extract insights and make predictions. This course may be useful for Data Scientists who want to learn Scala to handle and process large datasets. Scala's parallel programming capabilities and豊富なライブラリ makes it an efficient language for data-intensive tasks.

Reading list

We've selected seven 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 Effective Programming in Scala.
A hands-on guide to Scala programming, covering topics from the basics to advanced concepts like concurrency and functional programming.
A detailed guide to multithreading and concurrency in Scala, covering topics like actors, futures, and reactive programming.
A deep dive into Scala's functional programming capabilities, covering concepts like immutability, lazy evaluation, and monads.
A practical guide to building web applications in Scala, covering frameworks like Play and Akka-HTTP.
A transition guide for Java developers looking to adopt Scala, covering syntax, libraries, and programming paradigms.

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