We may earn an affiliate commission when you visit our partners.
Dick Wall

A complete introduction to the Scala 3 language teaching you all you need to know in order to use it on a daily basis.

Scala 3 is a new version of a beloved functional hybrid language, one with many improvements over Scala 2. This course has been completely re-written for Scala 3, to introduce the new features, concepts, keywords and syntax. In addition the course exercises have been fully updated and brought to Visual Studio Code and Metals (the meta-language-server) for the hands-on portions of the course.

Read more

A complete introduction to the Scala 3 language teaching you all you need to know in order to use it on a daily basis.

Scala 3 is a new version of a beloved functional hybrid language, one with many improvements over Scala 2. This course has been completely re-written for Scala 3, to introduce the new features, concepts, keywords and syntax. In addition the course exercises have been fully updated and brought to Visual Studio Code and Metals (the meta-language-server) for the hands-on portions of the course.

This course is half theory and half practice. Each subject covered includes worksheet based examples that you can experiment with, and exercises to complete allowing you to practice and reinforce what you have just learned in the theory.

The concepts are taught in a straightforward, simple approach with plenty of coding examples and clear explanations. Your instructor has more than 15 years of experience in Scala programming and more than a dozen years of experience teaching Scala to others.

Scala 3, just what you need, takes its title from two ideas, that the Scala 3 language could be just what you need to solve your programming problems, and that the topics covered are just what you need to quickly become productive in the language while still learning a lot of the theory and best practices surrounding Scala programming.

Come and learn Scala, at your own pace, from an experienced developer and trainer. Have fun while learning, and pick up the skills for using the tools and libraries as well as the core language.

Topics covered include:

  • Language and Syntax

  • Control Structures

  • Classes, Objects, Traits

  • Functions

  • Pattern Matching

  • Case Classes and Enums

  • Packages, Scopes and Importing

  • Inheritance and Scala Type Hierarchy

  • Testing

  • Lists and Collections

  • Java Integration

  • Using Libraries

  • Building Scala with SBT

  • Asynchronous Programming with Futures

Enroll now

What's inside

Syllabus

Introduction to Scala 3
Module 1 - Overview
Module 1 - Agenda
Module 1 - Download Exercises
Read more
Module 1 - The Scala REPL
Module 1 - SBT
Module 1 - First Time in the REPL
Module 1 - Vals and Vars
Module 1 - Hiding Vals
Module 1 - Scopes in the REPL
Module 1 - Scala and Types
Module 1 - Method/Function Definitions
Module 1 - If Expressions
Module 1 - Functional Style
Module 1 - Try..Catch..Finally Expressions
Module 1 - Simple Loops
Module 1 - Do..While
Module 1 - Using the Worksheet
Module 1 - Installing the Tools
Module 1 - Exercises
Module 1 - Exercises Complete
Next Steps with Scala 3
Module 2 - Overview
Module 2 - Agenda
Module 2 - Scala Projects in VSCode
Module 2 - Creating a Worksheet
Module 2 - Method Parameters and Return Types
Module 2 - Methods With No Return Types
Module 2 - Expressions vs Statements
Module 2 - Statements and Expressions
Module 2 - Tuples
Module 2 - Tuples Continued
Module 2 - Re-writing Rules, Infix
Module 2 - Re-writing Rules, Apply
Module 2 - Re-writing Rules, Update
Module 2 - Re-writing Rules General Notes
Module 2 - Quick Collections Intro
Module 2 - List Initialization
Module 2 - Sequences
Module 2 - Sets
Module 2 - (Im)mutability of Collections
Module 2 - Maps
Module 2 - The -> Extension Method
Module 2 - Simple Map Iteration
Module 2 - Mutability vs Functional Style
Module 2 - Opening and Reading a File
Module 2 - Exercises
Module 2 - Exercises Complete
Classes and Objects
Module 3 - Overview
Module 3 - Agenda
Module 3 - A Scala Class Definition
Module 3 - Constructor
Module 3 - Parameters, Fields and Parametric Fields
Module 3 - A Rational Class
Module 3 - Checking Preconditions
Module 3 - Referencing self
Module 3 - Infix and Symbolic Methods
Module 3 - Infix and Symbolic Methods Continued
Module 3 - Adding an Int to a Rational
Module 3 - Companion Objects
Module 3 - Because It's a Companion
Module 3 - Adding an Int to a Rational, Again
Module 3 - Adding a Rational to an Int
Module 3 - Implicits
Module 3 - Application Objects
Module 3 - Exercises
Module 3 - Exercises Complete
Control Structures
Module 4 - Overview
Module 4 - Agenda
Module 4 - Expressions vs Statements
Module 4 - Unit
Module 4 - Returning Something Other Than Unit
Module 4 - Returning this instead of Unit
Module 4 - Scala's if Expression
Module 4 - val and var
Module 4 - try ... catch ... finally
Module 4 - While Loop
Module 4 - For
Module 4 - For ... Yield
Module 4 - The Four Gs of For
Module 4 - For is More than just Loops
Module 4 - Match Expressions
Module 4 - Match Expression Guards
Module 4 - Match and More Match
Module 4 - String Interpolation
Module 4 - Exercises
Module 4 - Complete Exercises
Functions and Closures
Module 5 - Overview
Module 5 - Agenda
Module 5 - Private Methods
Module 5 - Nested Methods
Module 5 - Nested Method Scoping
Module 5 - Function Literals
Module 5 - Using an Anonymous Function Literal
Module 5 - How Function Literals Work
Module 5 - Other Methods on Function
Module 5 - Higher Order Functions

Save this course

Save Scala 3: Just What You Need to your list so you can find it easily later:
Save

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 3: Just What You Need with these activities:
Review Functional Programming Concepts
Reviewing functional programming concepts will help you better understand Scala's functional aspects and how to leverage them effectively.
Browse courses on Functional Programming
Show steps
  • Read articles or watch videos on functional programming principles.
  • Practice writing pure functions and using immutable data structures.
  • Familiarize yourself with higher-order functions and lambda expressions.
Pair Programming Session
Pair programming with a classmate will help you learn from each other and improve your coding skills.
Show steps
  • Find a classmate to pair program with.
  • Choose a coding exercise or project to work on together.
  • Take turns being the driver and the navigator.
  • Discuss your code and learn from each other.
Read 'Programming in Scala'
Reading 'Programming in Scala' will provide a solid foundation in the language and help you grasp the more complex concepts covered in the course.
View Programming in Scala on Amazon
Show steps
  • Read the chapters relevant to the current module.
  • Work through the examples and exercises in the book.
  • Refer to the book for clarification on specific language features.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read 'Scala Cookbook'
Consulting the 'Scala Cookbook' will provide practical solutions and examples for common programming tasks in Scala.
Show steps
  • Identify a specific programming problem you're facing.
  • Search for a solution in the 'Scala Cookbook'.
  • Adapt the solution to your specific needs.
Write a Blog Post on Scala 3 Features
Writing a blog post about Scala 3 features will help you solidify your understanding of the language and share your knowledge with others.
Show steps
  • Choose a specific Scala 3 feature to focus on.
  • Research the feature and gather relevant examples.
  • Write a clear and concise blog post explaining the feature and its benefits.
  • Publish your blog post on a platform like Medium or your own website.
Implement Data Structures in Scala
Practicing implementing data structures in Scala will reinforce your understanding of classes, objects, and collections.
Show steps
  • Implement common data structures like lists, trees, and graphs.
  • Write unit tests to ensure the correctness of your implementations.
  • Compare your implementations to the standard Scala collections library.
Build a Simple Application with Scala and SBT
Starting a project using Scala and SBT will give you hands-on experience with building and managing Scala applications.
Show steps
  • Set up a new Scala project using SBT.
  • Implement a simple application, such as a command-line tool or a web service.
  • Use SBT to manage dependencies and build your project.
  • Write unit tests to ensure the correctness of your application.

Career center

Learners who complete Scala 3: Just What You Need will develop knowledge and skills that may be useful to these careers:
Software Engineer
A Software Engineer designs, develops, tests, and maintains software applications. With Scala 3 being a modern functional hybrid language, this course on Scala 3 helps one become proficient in a language that's increasingly relevant in the field. The course's comprehensive coverage of language syntax, control structures, and object-oriented principles means this course builds a strong base for the role. Knowledge of Scala 3 equips the engineer with skills to implement complex algorithms and data structures. The exercises and examples in the course provide practical coding experience, a key advantage for any aspiring Software Engineer.
Backend Developer
A Backend Developer is responsible for writing server-side logic. The role requires proficiency in programming languages and frameworks to build robust and scalable applications. This course on Scala 3 empowers the Backend Developer with a versatile language suitable for developing high-performance systems. The course's focus on language syntax, classes, objects, and asynchronous programming directly translates to building efficient and maintainable server-side components. This course helps Backend Developers acquire the skills to design and implement complex systems, managing data and ensuring seamless communication between the front-end and back-end.
Application Developer
An Application Developer designs and codes software applications for various platforms. The role involves understanding user requirements, writing efficient code, and debugging software. This course on Scala 3 allows the Application Developer to harness the power of a functional hybrid language for building robust and scalable applications. The course's emphasis on language syntax, control structures, and object-oriented concepts helps with writing clean and maintainable code. This course can help Application Developers acquire skills in building applications that are both performant and user-friendly, enhancing their capability to deliver high-quality software solutions.
Quantitative Analyst
A Quantitative Analyst, or Quant, develops and implements mathematical models for pricing and hedging financial instruments. This role typically requires an advanced degree. This course on Scala 3 may be useful to Quantitative Analysts by providing a powerful tool for building sophisticated models and simulations. The course's focus on functional programming, collections, and asynchronous programming is valuable for handling large datasets and performing complex calculations efficiently. Becoming proficient in Scala 3 helps Quantitative Analysts enhance their ability to analyze financial data and develop innovative trading strategies.
Financial Engineer
A Financial Engineer applies mathematical and computational techniques to solve financial problems. This requires strong programming skills and knowledge of financial models. This course on Scala 3 can be useful to Financial Engineers by providing a language suitable for building complex financial simulations and risk management systems. The course’s coverage of asynchronous programming and collections helps Financial Engineers handle large datasets and perform complex calculations. Knowledge of Scala 3 empowers Financial Engineers to develop innovative solutions and improve the accuracy of financial analysis.
Lecturer
A Lecturer teaches computer science and software engineering topics at a university or college. The role requires deep knowledge of programming languages, software development methodologies, and teaching skills. This course on Scala 3 helps the Lecturer gain expertise in a modern language and its applications. The course's structure, exercises, and examples provide a solid foundation for teaching Scala 3 to students. Knowledge of Scala 3 empowers Lecturers to deliver engaging and informative lectures, preparing students for careers in software development.
Full-Stack Developer
A Full Stack Developer works on both the front-end and back-end of web applications. This requires skills in multiple programming languages and frameworks. This course on Scala 3 may be useful to the Full Stack Developer through expanding their language toolkit, enabling them to work on back-end systems with improved efficiency and scalability. The course's emphasis on asynchronous programming, testing, and building with SBT is valuable for managing complex projects. This course helps the Full Stack Developer broaden their skill set and contribute to all aspects of web application development.
Test Engineer
A Test Engineer designs and executes tests to ensure software quality. A test engineer needs to be capable of maintaining test suites. This course on Scala 3 may be useful to Test Engineers through its teaching of testing methodologies within the Scala environment. By understanding the structure of code in Scala 3, Test Engineers gain the capacity to automate tests, create test suites, and validate software functionality, improving the quality assurance process. The course’s focus on testing practices and examples helps Test Engineers implement effective strategies for identifying and resolving software defects.
Data Engineer
A Data Engineer builds and maintains the infrastructure required for data generation, storage, and processing. This course on Scala 3 may be useful to Data Engineers by building competence in a language often used in big data processing frameworks like Apache Spark, which commonly uses Scala. The course's modules on lists, collections, and asynchronous programming with futures is beneficial for handling large datasets and building scalable data pipelines and provides applicable context for the modern data landscape. Familiarity with Scala 3 empowers data engineers to optimize data workflows and contribute to efficient data-driven decision-making. The course's coverage on testing may be helpful when maintaining data pipelines.
DevOps Engineer
A DevOps Engineer automates and streamlines the software development and deployment process. This role requires familiarity with various tools and technologies, including programming languages. This course on Scala 3 may be helpful as it provides an understanding of a language that can be used for scripting and automation tasks in a DevOps environment. The course's coverage of building Scala with SBT, testing, and using libraries is useful for creating automated build and deployment pipelines. Knowledge of Scala 3 empowers DevOps Engineers to optimize workflows and improve the efficiency of software delivery.
Software Consultant
A Software Consultant advises organizations on how to use software to achieve their business goals. The role requires a broad understanding of different technologies and solution architectures. This course on Scala 3 may be useful to Software Consultants by providing knowledge of a functional hybrid language that can solve various programming problems. The course's coverage of language syntax, control structures, and building with SBT is useful for recommending appropriate solutions. Knowledge of Scala 3 empowers Software Consultants to guide organizations in adopting effective technologies and best practices.
Academic Researcher
An Academic Researcher conducts research in computer science and software engineering. This often requires a doctorate. This course on Scala 3 may be helpful to Academic Researchers by providing a deeper understanding of a modern programming language and its potential applications. The course's coverage of language features, functional programming concepts, and type hierarchies helps with conducting research on language design and programming paradigms. Knowledge of Scala 3 empowers researchers to explore new ideas and contribute to advances in software technology.
Systems Architect
A Systems Architect designs and oversees the implementation of complex software and hardware systems. They need a deep understanding of various technologies and architectural patterns. This course on Scala 3 helps the Systems Architect understand how a modern language can be leveraged to build scalable and maintainable systems. The course's exploration of asynchronous programming, testing, and building with SBT provides a solid foundation for making informed decisions about technology choices and system design. The Systems Architect role requires a view of the system as a whole, and this course may provide valuable insights into language-level architectural implementations.
Mobile Application Developer
A Mobile Application Developer creates applications for smartphones and tablets. This requires expertise in mobile development platforms and programming languages. This course on Scala 3 may be useful to the Mobile Application Developer as it builds skills that can be applied to cross-platform mobile development frameworks that use Scala. The course's coverage of language syntax, control structures, and object-oriented concepts helps with building efficient and maintainable mobile applications. Knowledge of Scala 3 empowers Mobile Application Developers to create innovative and user-friendly mobile experiences.
Game Developer
A Game Developer creates video games for various platforms. This role requires expertise in programming languages, game engines, and graphics programming. This course on Scala 3 may be useful to the Game Developer through its coverage of programming concepts that are relevant to game development, such as object-oriented programming and data structures. The course's emphasis on language syntax and control structures can help with writing game logic and AI algorithms. Knowledge of Scala 3 is not widely used in Game Development, however, so it is considered a niche skill.

Reading list

We've selected two 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 3: Just What You Need.
Comprehensive guide to Scala, covering everything from the basics to advanced topics. It's particularly useful for understanding the language's design principles and best practices. It serves as both a tutorial and a reference, making it valuable throughout the course and beyond. This book is commonly used as a textbook at academic institutions.
Provides practical solutions to common programming problems in Scala. It's a valuable resource for learning how to use the language effectively in real-world scenarios. It is more valuable as additional reading than it is as a current reference. This book is commonly used by industry professionals.

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