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

Scala Applied, part 3 is the final part of this Scala programming language course. The course in its entirety is aimed at giving you a full, day-to-day working knowledge of Scala programming, including some of the most common core library APIs.

This part starts with a final language feature for Scala (continuing from the other language features covered in parts 1 and 2). Pattern matching, partial functions and case classes are examined, how they can be used together, and how partial functions can help you avoid certain runtime errors by validating input to a function before you call it.

Read more

Scala Applied, part 3 is the final part of this Scala programming language course. The course in its entirety is aimed at giving you a full, day-to-day working knowledge of Scala programming, including some of the most common core library APIs.

This part starts with a final language feature for Scala (continuing from the other language features covered in parts 1 and 2). Pattern matching, partial functions and case classes are examined, how they can be used together, and how partial functions can help you avoid certain runtime errors by validating input to a function before you call it.

Then we delve into the collections API in the core libraries (a very in-depth 2 module examination of the capabilities and performance tradeoffs of the various collection options), and finish up with a look at using Scala on Java projects, using Java libraries from Scala and how to harness build tools (particularly SBT) to build your project and even write custom settings and tasks. Following that we look at the Futures API in the core libraries.

This course is also a good lead-in to the Stairway to Scala Advanced 3 part course which concentrates on in-depth language features, higher level functional abstractions, common patterns and idioms, type theory and other more advanced Scala concepts that will be particularly helpful for anyone writing their own libraries and APIs in Scala.

Enroll now

What's inside

Syllabus

Understand the goals of Part 3 of this course, and have the coding exercises downloaded

This is part three of a three part course, the first part covers converting to Scala from other programming languages and part two covers Scala language features that might be different from other languages or perhaps even unique. This part three finishes the tour of powerful language features with case classes and pattern matching, then moves on to the most important core library features, like collections, futures, and also covers building and working with Java.

Slides and exercises are attached to the next lecture.

Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores pattern matching, partial functions, and case classes, which are powerful features for writing concise and robust code in Scala
Covers the Scala collections API in depth, including performance tradeoffs, which is essential for efficient data manipulation
Examines using Scala on Java projects, including using Java libraries from Scala, which is useful for integrating with existing systems
Delves into build tools, particularly SBT, for building Scala projects and writing custom settings and tasks, which is crucial for project management
Introduces the Futures API in the core libraries, which is important for asynchronous programming and improving application responsiveness
Is a good lead-in to the Stairway to Scala Advanced course, which focuses on in-depth language features and higher-level functional abstractions

Save this course

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

Reviews summary

Applied scala: collections, build tools, & interop

Based on the course's curriculum, prospective learners may find this course provides in-depth coverage of essential Scala features like Pattern Matching and Case Classes. It appears to offer a particularly comprehensive deep dive into the Scala Collections API across two dedicated modules, covering performance and various implementations. The course also includes highly practical sections on build tools, focusing on SBT, and crucial information on mixing Scala and Java for interoperability. As the final part of an applied series covering complex topics, the material is likely intensive, suggesting a potentially fast pace that requires dedicated effort and a solid foundation from the previous parts.
Clear explanation of core language features.
"The explanations of Pattern Matching and Case Classes helped solidify my understanding."
"I found the coverage of Extractors and Sealed Class Hierarchies particularly insightful."
"Module 12 provided a solid foundation for using pattern matching effectively."
Useful coverage of SBT and Java interoperability.
"The parts on SBT and mixing Scala with Java are directly applicable to my work environment."
"Understanding the Scala/Java compile cycle and calling Java from Scala is crucial."
"The module on using SBT was very helpful for managing Scala projects."
Comprehensive coverage of Scala collections.
"I gained a comprehensive understanding of the Scala Collections API, including performance differences."
"The two dedicated modules on collections were incredibly thorough and useful."
"Learning about views and iterators in the collections section felt very practical."
Dense material covered rapidly.
"The course covers a lot of ground very quickly, requiring focused attention."
"I had to pause and rewatch lectures frequently to fully grasp the concepts."
"While thorough, the pace can feel challenging if you're not fully prepared."

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 Applied, Part 3 with these activities:
Review Java Fundamentals
Strengthen your understanding of Java fundamentals to better grasp how Scala interacts with Java libraries and projects.
Show steps
  • Review Java syntax and data structures.
  • Practice writing simple Java programs.
  • Study Java's object-oriented principles.
Read 'Scala Cookbook'
Explore practical solutions and recipes for common Scala programming tasks to enhance your understanding of the language.
Show steps
  • Browse the table of contents to identify relevant topics.
  • Study the code examples and explanations.
  • Experiment with the recipes in your own Scala projects.
Implement Collection Operations
Reinforce your understanding of Scala collections by implementing various operations like filtering, mapping, and folding on different collection types.
Show steps
  • Choose a set of collection operations to practice.
  • Implement the operations using Scala's collection API.
  • Test your implementations with different data sets.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple SBT Project
Gain hands-on experience with SBT by creating a simple Scala project and configuring its build settings.
Show steps
  • Create a new Scala project directory.
  • Define the project's build.sbt file.
  • Add Scala code and build the project using SBT.
Blog Post: Pattern Matching
Solidify your understanding of pattern matching by writing a blog post explaining its concepts and use cases with examples.
Show steps
  • Research different aspects of pattern matching.
  • Write clear explanations and code examples.
  • Publish your blog post online.
Read 'Programming in Scala'
Deepen your understanding of Scala's core concepts and advanced features by studying a comprehensive guide written by the language's creator.
View Programming in Scala on Amazon
Show steps
  • Read the chapters on collections and pattern matching.
  • Work through the examples and exercises.
  • Refer to the book as a reference when working on Scala projects.
Contribute to a Scala Library
Enhance your Scala skills by contributing to an open-source Scala library, gaining experience with real-world codebases and collaboration.
Show steps
  • Find a Scala library on GitHub.
  • Identify an issue or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Scala Applied, Part 3 will develop knowledge and skills that may be useful to these careers:
Build Engineer
A Build Engineer is responsible for managing and improving the software build process. This course is particularly beneficial, as it covers SBT in detail. The instruction provided will enable a Build Engineer to create custom settings and tasks, optimizing the build process. Understanding how Scala interacts with Java projects, as covered in this course, is essential for managing builds in mixed-language environments. The course's focus on build tools may help a Build Engineer to streamline the development workflow, reduce build times, and ensure consistent builds across different environments.
Software Engineer
A Software Engineer designs, develops, and tests software applications. This course, with its focus on Scala programming and core library APIs, helps build a foundation for developing robust applications. The modules on collections and futures are especially relevant, helping a Software Engineer to write efficient, scalable, and concurrent code. Furthermore, understanding how to integrate Scala with Java projects, as covered in the course, is crucial for working in many enterprise environments. This course may prove particularly useful for transitioning from other languages to Scala, deepening understanding of powerful language features such as case classes and pattern matching, and making effective use of Scala in real-world software development.
Application Developer
An Application Developer creates and maintains software applications for various platforms. This course helps an Application Developer in leveraging Scala's features for building robust applications. The course's in-depth examination of the collections API is especially useful for efficiently manipulating data within applications. The lessons on Futures are also broadly applicable to enhancing an application's ability to handle concurrency. Understanding how to use build tools like SBT, as covered in this course, is important for managing project dependencies and builds. This course will be particularly useful for those looking to use pattern matching and case classes to create simple, robust applications.
Financial Software Developer
A Financial Software Developer creates software for the financial industry. This course helps Financial Software Developers use Scala's features for building reliable and high-performance systems. The rigorous examination of collections API is especially relevant for efficiently processing financial data. The Futures module is useful for writing concurrent applications, crucial in finance. Furthermore, the module on integrating Scala with Java projects may allow integration with established financial systems. Pattern matching and partial functions, as covered in the course, ensures cleaner and more robust code.
Backend Developer
A Backend Developer focuses on server-side logic and database interactions. This course may help a Backend Developer leverage Scala's powerful features for building scalable and maintainable backend systems. The thorough exploration of Scala's collections API is especially pertinent for handling data efficiently. The course's coverage of Futures API is indispensable for writing concurrent and responsive applications. Furthermore, the module on integrating Scala with Java projects is essential for working with existing infrastructure and libraries. This course, by covering pattern matching and case classes, may give a Backend Developer the tools for writing expressive and type-safe code.
Machine Learning Engineer
A Machine Learning Engineer develops and deploys machine learning models. This course can greatly assist them in leveraging Scala for building scalable machine learning pipelines using frameworks like Apache Spark. The collections API is broadly applicable to data manipulation while building these pipelines. The section on Futures is useful for parallelizing training or inference. Additionally, the course's instruction on integrating Scala with Java assists in integrating with other machine-learning libraries. Understanding Scala allows Machine Learning Engineers to benefit from the unique features of the JVM. The Machine Learning Engineer will find that this course prepares them to use Scala for data processing.
Big Data Developer
A Big Data Developer builds and maintains systems for processing large datasets. This course may equip a Big Data Developer with the skills to use Scala, a popular language in the big data ecosystem, with tools like Spark and Kafka. The detailed examination of the collections API is useful for efficiently processing large datasets. The course's instruction on Futures is relevant for writing concurrent data processing pipelines. Also, the material on integrating Scala with Java projects is crucial, as many big data tools are Java-based. Furthermore, this course will help Big Data Developers to write concise and clear code.
Data Scientist
A Data Scientist analyzes data to extract insights and build predictive models. The Data Scientist may be able to use Scala, especially alongside Apache Spark. This course can help Data Scientists leverage Scala's collections API for efficient data manipulation. The discussion of Futures will assist with parallel processing of large datasets to speed up model training. Furthermore, the course's instruction on integrating Scala with Java, a language frequently used in data science tools, is essential. This course, covering pattern matching and case classes, is not a replacement for statistical knowledge, but it can offer more robust model deployment processes.
Data Engineer
A Data Engineer builds and maintains the infrastructure for data storage and processing. This course may equip a Data Engineer with the skills to use Scala for data manipulation and analysis. The detailed examination of the collections API is useful for efficiently processing large datasets. Moreover, the course's instruction on using Scala with Java projects is relevant since many big data tools are written in Java and interoperate with Scala. This course, covering pattern matching and partial functions, may help build a foundation for writing robust and maintainable data pipelines. Scala Applied also provides knowledge of how to harness build tools like SBT, allowing a Data Engineer to manage their project dependencies and builds.
Software Architect
A Software Architect designs the high-level structure of software systems. This course may help a Software Architect understand the capabilities of Scala and its core libraries, enabling them to make informed decisions about technology stacks. The course's coverage of collections, futures, and integration with Java projects is relevant for designing scalable and interoperable systems. The course's modules on pattern matching and case classes are additionally helpful for designing expressive and maintainable code. This course, with its insights into build tools like SBT, helps a Software Architect understand the project's build and deployment processes.
Test Automation Engineer
A Test Automation Engineer develops and maintains automated test suites. This course may assist a Test Automation Engineer in using Scala to write robust and maintainable tests. The course's overview of Scala's features may help in creating expressive and readable test code. The course's instruction on integrating Scala with Java projects is relevant for testing Java-based systems. The coverage of pattern matching and case classes additionally bolsters your ability to write elegant tests. The Scala Applied course may prove useful for the test automation engineer.
Cloud Engineer
A Cloud Engineer manages and maintains cloud infrastructure and services. This course may help a Cloud Engineer who uses Scala for automation or application development within the cloud environment. The detailed instruction on build tools like SBT is useful for managing deployments and dependencies. The course's coverage of collections and futures may assist in developing efficient and scalable cloud applications. Furthermore, the knowledge gained about Scala's core libraries is broadly applicable to writing automation scripts and infrastructure-as-code. The Cloud Engineer may find that this course on Scala is helpful for building cloud systems.
DevOps Engineer
A DevOps Engineer automates and streamlines the software development lifecycle. This course may assist a DevOps Engineer in using Scala for scripting and automation tasks. The course's coverage of SBT offers insights into build automation and dependency management, crucial aspects of DevOps. The course's instruction on integrating Scala with Java is relevant for working in environments with mixed technology stacks. Furthermore, the knowledge of Scala's core libraries is invaluable for writing efficient and reliable automation scripts. This course, by providing a working knowledge of Scala programming, may help a DevOps engineer to develop the skills to automate software deployment.
Quantitative Analyst
A Quantitative Analyst, often requiring an advanced degree, develops mathematical models for financial markets. While Scala is not the most common language, this course may help a Quantitative Analyst use Scala for implementing and testing financial models. The course's in-depth examination of Scala collections is relevant for data analysis and manipulation. The Futures API is crucial for simulation and risk analysis. The course will also help build a foundation for working with large datasets and numerical computations. Specifically, this course may help a Quantitative Analyst to use pattern matching and case classes to effectively model financial instruments.
Game Developer
A Game Developer may use Scala, although it is more common to see languages like C# or C++. This course may still be useful for some roles, as the collections API is widely applicable to game development. Game Developers typically require strong skills in mathematics and algorithms. The examination of the collections API can help game developers to write more efficient code. Furthermore, the instructions to integrate Scala with Java projects will assist in areas that are already using Java.

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 Applied, Part 3.
Programming in Scala comprehensive guide to the Scala language, written by the creator of Scala, Martin Odersky, and others. It covers all aspects of the language, from basic syntax to advanced features like concurrency and type systems. is often used as a textbook in university courses on Scala. It provides a deep understanding of the language's design and implementation, making it an excellent resource for serious Scala developers.
The Scala Cookbook valuable resource for practical Scala recipes and solutions. It provides numerous examples of how to use Scala's features, including collections, pattern matching, and working with Java. is particularly helpful for understanding common Scala idioms and best practices. It serves as a useful reference for solving real-world programming problems in Scala.

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