Professional Scala teaches you how to build and contribute to Scala programs, recognizing common patterns and techniques used with the language. You'll learn how to write concise, functional code with Scala. After an introduction to core concepts, syntax, and writing example applications with scalac, you'll learn about the Scala Collections API and how the language handles type safety via static types out-of-the-box. You'll then learn about advanced functional programming patterns, and how you can write your own Domain Specific Languages (DSLs). By the end of the course, you'll be equipped with the skills you need to successfully build smart, efficient applications in Scala that can be compiled to the JVM.
Professional Scala teaches you how to build and contribute to Scala programs, recognizing common patterns and techniques used with the language. You'll learn how to write concise, functional code with Scala. After an introduction to core concepts, syntax, and writing example applications with scalac, you'll learn about the Scala Collections API and how the language handles type safety via static types out-of-the-box. You'll then learn about advanced functional programming patterns, and how you can write your own Domain Specific Languages (DSLs). By the end of the course, you'll be equipped with the skills you need to successfully build smart, efficient applications in Scala that can be compiled to the JVM.
About the Authors
Nimish Narang has a degree in biology and computer science. He has worked with application development and machine learning. His recent achievement was building the biggest ever mobile machine learning course which has many different machine learning and deep learning models in Python and translated into both Android and iOS applications to incorporate some elements of machine learning into mobile application.
Joao Azevedo is a Software Engineer currently working at ShiftForward, where he is involved in the development of large-scale systems for the online advertising industry. His interests in computer science usually revolve around artificial intelligence, machine learning, data mining, algorithms, data structures and programming language theory. He is fond of reading computer science textbooks and science-fiction novels. He makes an effort to keep as much of the code he writes open-source.
Mads Hartmann is a software engineer with a fondness for automation and programming languages, especially statically typed functional ones. He holds a masters degree in computer science from the University of Copenhagen and he is currently working as a full-stack engineer at Family. He is active in the Copenhagen developer scene and he has organized a meetup group for people interested in Scala and co-organized a meetup group for people generally interested in programming languages.
Ruslan Shevchenko is a system architect and a software developer who is focused on building reliable software systems. He specializes in programming languages and frameworks such as Scala, Java ( The domains he specializes in are telecommunications, OSS/billing systems, finance, code analysis, social integration, system utilities architecture domains, large-scale software systems, and distributed processing. In terms of architecture, his specialist domains are large-scale software systems and distributed processing.
This video gives an overview of the entire course.
In this video, we will set up our environment for the course.
This video gives an overview of the entire lesson.
In this topic, we'll be exploring ad hoc polymorphism, but through the usage of type classes.
In this video, we will be covering the structure of a basic Scala program. We will be covering definitions such as packages, imports, and objects. We will also be looking into the main method of a Scala program.
In this video, we will look at the structure of a Scala project in more detail.
Now that we can use REPL, this video will explain the base Scala syntax.
In this video, we will learn about the different tools that are used for unit testing in Scala.
In this video, we will learn to:
● Run tests for our chatbot
● Add the second test, which checks bye
● Add the date command to our chatbot program
This section summarizes what we have learned in the earlier topics.
In this video, we will learn about objects.
In this video, we will explore classes.
In this video, we will learn about equality, case classes, and the difference between value and reference equality.
In this video, we will learn about pattern matching and how to use match/ case statements.
In this video, we will explore traits which is one of Scala's traditional object-oriented programming facilities.
In this video, we will learn about self-types, annotations and special classes.
Now that we know the theoretical basics, let's look at the facilities and how they are used in our program.
In this video, we will look at sealed traits and algebraic datatypes.
In this video, we will create the same modes for the CurrentTime query.
In this video, we will learn about function calls.
In this video, we will learn the types of parameters which are in passing mode: by value, by name, and by need.
In this topic, we will introduce the fundamentals of functional programming, such as function values and high-order functions.
In this topic, we will look at conversions and syntax sugar in a function definition.
In this video, we will learn how to write our own pattern matcher and get acquainted with some standard generic classes which are often used with pattern matching.
We have learned a lot about functions and pattern matching, In this video, we will apply our theoretical knowledge to practical programming.
In this video, we will cover the core concepts behind functional programming and give you the necessary knowledge to understand and write simple functional programs.
In this video, we will learn about:
● Using vals instead of vars
● Implementing the standard library
● Higher-Order Functions
● The cornerstones Of Functional Programming
Lists are probably the most commonly used data structures in Scala programs. Learning how to work with lists is important both from a data structure standpoint but also as an entry point to designing programs around recursive data structures. Let’s look at it in more detail in this video.
In this video, we will learn about:
● First-Order Methods on List
● Appending and Concatenation
● Taking the Length of a List
● Reversing a List
● Prefixes and Suffixes
● Display
All Scala collections descend from a common trait called Traversable. The design adopted for Scala collections allows one to use higher-order functions similarly in nearly all collections, with proper return types in specific instances. Treating collections as sequences, or as containers of elements, allows one to use different data structures seamlessly. Let’s learn more about them in detail in this video.
Now that we've covered the List and some relevant Traversables in the Scala standard library, we should also visit some other useful collections Scala provides. Let’s look at them in more detail in this video.
In this topic, we are moving beyond the basic concepts behind functional programming and looking at some of the functional design patterns that you'll encounter when using functional libraries.
In this video, we will learn about type basics and polymorphism.
Variance provides a way to constrain parameterized types. It defines a subtyping relationship between parameterized types based on the subtyping relationship of their component types.
If you have come from Java, most of these things may not be surprising. As such, let's look at some other features of Scala's type system.
In this video, we will explore:
● Implicit Parameters
● Implicit Conversions
● Implicit Resolution
In this video, we will learn about Functors and Monads.
In this video, we will learn about two of the popular Scala libraries, Cats and Doobie.
In this video, we will look at Doobie in more detail.
In this video, we will look at DSLs and the different types of DSLs.
In this video, we'll have a look at a popular library for testing your Scala programs, ScalaTest, and see how the library uses DSLs to allow its users to write readable tests in various styles.
In this video, we will look at the different ScalaTest Styles.
In this video, we'll look at the Scala features that make it easy to write small DSLs.
In this video, we'll reimplement some FlatSpec ScalaTest DSLs to see how to implement DSLs in Scala.
This video will help you get a better overview of the Scala ecosystem and help guide your self-study after the course has ended, so you can continue to improve your Scala skills.
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.
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.