Writing software is fun, it gets easier when types drive your software development, this is called Type-driven Development. In this course, Scala Fundamentals: The Type System, you’ll learn to use Scala’s extensive type system to write type-safe, easy to understand, abstract and concise code. First, you’ll explore the ways to write constructs like classes, objects, case classes, and traits, which work as types. Then, you’ll learn how to make them generic. Next, you’ll discover concepts of type bounds and variance. Finally, you’ll delve into writing typeclasses. When you’re finished with this course, you’ll have the skills and knowledge of Scala’s extensive type system needed to write easy to understand and editor-friendly code.