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

Scala Applied, Part 2 covers Scala features that are different from other languages or maybe unique to Scala. It is intended to follow on from Part 1, and dovetails nicely into that flow.

While part 1 covered common concepts from other languages in Scala, part 2 concentrates on the parts of the language that are more specific to Scala and may be unfamiliar when coming from other programming languages, either the features themselves or the syntax for using them, taught by an instructor with over 15 years experience programming in Scala, and more than a dozen years teaching it.

Read more

Scala Applied, Part 2 covers Scala features that are different from other languages or maybe unique to Scala. It is intended to follow on from Part 1, and dovetails nicely into that flow.

While part 1 covered common concepts from other languages in Scala, part 2 concentrates on the parts of the language that are more specific to Scala and may be unfamiliar when coming from other programming languages, either the features themselves or the syntax for using them, taught by an instructor with over 15 years experience programming in Scala, and more than a dozen years teaching it.

As part of the larger Scala Applied 3 part course, this will prepare you with everything you need for day-to-day development in the Scala language.

In particular, by following this course you will:

  • Understand Scala's composition and inheritance features

  • Create abstract classes and pure abstract members (methods and fields)

  • Override and overload class methods

  • Create primary and auxiliary constructors

  • Call superclass constructors and methods

  • Understand and use parametric fields

  • Create factory methods in companion objects

  • Construct simple DSLs (Domain Specific Languages)

  • Understand top and bottom types and how Scala uses them

  • Write correct equals and hashCode methods

  • Use traits to mix behavior into classes

  • Know the different styles of packages and visibility modifiers

  • Be able to import anything from anywhere

  • Write pre-conditions and post-conditions

  • Test your code with unit testing

Enroll now

What's inside

Syllabus

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

If you have not already done so, please follow the free course instructions at https://www.udemy.com/stairway-to-scala-setup-instructions/learn/#/ so that you are ready to run both the Scala REPL and the exercises. Also please download the slides and exercises from the next document after this video has finished.


Thanks and enjoy the course. This is part two of a three part course, the first part covers converting to Scala from other programming languages, while part three will concentrate on the core libraries and APIs in Scala.

Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores Scala's composition and inheritance features, which are essential for building robust and maintainable applications
Covers creating simple DSLs, which allows developers to design more expressive and domain-specific code
Examines top and bottom types, which are important for understanding Scala's type system and ensuring type safety
Requires learners to first complete Scala Applied, Part 1, which may pose a barrier to entry for some learners
Teaches unit testing, which is a core skill for ensuring code quality and reliability in professional software development
Focuses on Scala-specific features, which may not be directly transferable to other programming languages

Save this course

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

Reviews summary

Advanced scala concepts applied

According to learners, this course delves into more advanced Scala features, such as composition, inheritance, types, and traits, going beyond concepts common in other languages. Students generally find the content deep and valuable for understanding Scala's unique aspects. Many highlight the quality of the instructor's expertise and the challenging but rewarding exercises. However, some reviews indicate the pace can be fast and certain topics are complex, requiring effort. It is widely noted that this course builds directly on Part 1 and prior Scala understanding is necessary.
Exercises reinforce learning, but require effort.
"The exercises are tough but incredibly useful for applying the concepts."
"Module exercises help solidify what you've learned in the videos."
"Found the exercises challenging, but working through them made the concepts click."
"It's not just theory; the exercises make you code and understand."
Instructor's knowledge is highly praised.
"The instructor clearly has a vast amount of experience with Scala."
"His explanations are generally clear and easy to follow."
"Knowledgeable instructor who guides you through the complexities."
"Really appreciated the depth of the instructor's insights based on years of experience."
Covers core Scala features not found elsewhere.
"This course really takes you deeper into Scala's unique features like traits and type hierarchy. Essential for advanced understanding."
"Liked the focus on concepts like 'abstract override' and composition which are specific to Scala's power."
"Explained complex topics such as stacking traits and the nuances of Nil, Null, Nothing, None very clearly."
"Provides solid explanations of inheritance, traits, and other Scala-specific constructs."
"Finally understood parametric fields and factory methods thanks to this course's detailed coverage."
Some topics are difficult, pace can be quick.
"Some parts felt a bit rushed, especially the more abstract concepts."
"Had to rewatch several lectures to grasp the full meaning, it moves quite fast at times."
"Certain modules, particularly on types and traits, were quite dense and challenging."
"Might be difficult for someone without a strong foundation from Part 1."
Strongly dependent on knowledge from Part 1.
"Definitely need to have completed Part 1 or have equivalent prior Scala knowledge."
"This course builds directly on the previous one, make sure you're comfortable with those topics first."
"Coming into this without Part 1 would be a struggle, it assumes that base."

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 2 with these activities:
Review Object-Oriented Programming Concepts
Solidify your understanding of object-oriented programming principles before diving into Scala's specific implementation. This will make it easier to grasp Scala's unique features.
Browse courses on Object-oriented Design
Show steps
  • Review the core concepts of OOP: encapsulation, inheritance, and polymorphism.
  • Practice implementing these concepts in a language you are already familiar with.
  • Identify areas where your understanding is weak and focus your review there.
Create a Cheat Sheet for Scala's Type Hierarchy
Organize and summarize Scala's type hierarchy to create a handy cheat sheet. This will help you quickly recall the relationships between different types and understand how they are used.
Show steps
  • Review the course materials on Scala's type hierarchy.
  • Create a diagram or table summarizing the relationships between the different types (Any, AnyRef, AnyVal, Nothing, Null, etc.).
  • Add brief explanations of each type and its purpose.
Read "Programming in Scala"
Deepen your understanding of Scala's features and syntax by reading a comprehensive guide. This will supplement the course material and provide a broader perspective.
View Programming in Scala on Amazon
Show steps
  • Obtain a copy of "Programming in Scala" by Odersky, Spoon, and Venners.
  • Read the chapters relevant to the course topics, such as classes, traits, and types.
  • Work through the examples and exercises in the book to reinforce your understanding.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read "Effective Scala"
Improve your Scala coding style and learn best practices by reading "Effective Scala". This will help you write more maintainable and readable code.
Show steps
  • Obtain a copy of "Effective Scala".
  • Read the book and take notes on the key recommendations.
  • Apply the recommendations to your own Scala code.
Blog Post: Scala Traits vs. Abstract Classes
Solidify your understanding of traits and abstract classes by explaining the differences and use cases in a blog post. Teaching others is a great way to reinforce your own knowledge.
Show steps
  • Research the differences between Scala traits and abstract classes.
  • Write a blog post explaining the key differences, advantages, and disadvantages of each.
  • Include code examples to illustrate the concepts.
  • Publish your blog post on a platform like Medium or your personal website.
Implement equals and hashCode methods
Master the implementation of `equals` and `hashCode` methods in Scala to avoid common pitfalls. This is crucial for ensuring the correctness of your data structures and algorithms.
Show steps
  • Write several Scala classes with different fields.
  • Implement the `equals` and `hashCode` methods for each class, following best practices.
  • Write unit tests to verify that the methods are implemented correctly.
Build a Simple DSL
Apply your knowledge of Scala's features to create a simple Domain Specific Language (DSL). This will test your understanding of composition, inheritance, and other advanced concepts.
Show steps
  • Choose a simple domain for your DSL, such as a configuration language or a simple game scripting language.
  • Design the syntax and semantics of your DSL.
  • Implement the DSL using Scala's features, such as implicit conversions and operator overloading.
  • Write tests to verify that your DSL works as expected.

Career center

Learners who complete Scala Applied, Part 2 will develop knowledge and skills that may be useful to these careers:
Software Engineer
A software engineer designs, develops, and tests software applications. This often involves understanding different programming paradigms and languages. Scala Applied, Part 2, delves into Scala-specific features like composition, inheritance, and traits, which are essential for building complex software systems. By mastering these concepts, a software engineer can write more efficient, maintainable, and robust code. The course exploration of domain specific languages may be useful when implementing software solutions. Familiarity with testing practices, as addressed in this course, helps the software engineer ensure code quality and reliability.
Application Developer
An application developer specializes in creating applications for various platforms, such as mobile, web, or desktop. Understanding object-oriented programming principles and language-specific features is crucial. Scala Applied, Part 2 focuses on Scala's unique aspects, including creating abstract classes, overriding methods, and using traits. Application developers can leverage these features to build modular and extensible applications. The course's exploration and composition and inheritance features will be particularly useful. An application developer can also improve code quality with the unit testing techniques taught in this course.
Technical Lead
A technical lead guides and mentors a team of developers, providing technical direction and ensuring code quality. Scala Applied, Part 2, explores advanced Scala features such as composition and inheritance. This helps technical leads guide their teams in building robust and scalable systems. The course's section on domain specific languages may also be useful when leading projects. Knowledge of testing your code by unit testing, as covered in this course, allows for the establishment of a higher quality standard.
Systems Architect
A systems architect designs and implements the overall structure of software systems. This requires a deep understanding of programming languages, design patterns, and architectural principles. Scala Applied, Part 2, explores advanced Scala features such as composition and inheritance. Through understanding these tools a systems architect can build robust and scalable systems. The architect may find the course's sections on packages, imports, and scope helps in designing modular systems. Knowledge of testing your code by unit testing, as covered in this course, allows for the establishment of a higher quality standard.
Software Architect
A software architect designs and implements the overall structure of software systems. This requires a deep understanding of programming languages, design patterns, and architectural principles. Scala Applied, Part 2, explores advanced Scala features such as composition and inheritance. This helps the software architect build robust and scalable systems. The architect may find the course's sections on packages, imports, and scope helps in designing modular systems. Knowledge of testing your code by unit testing, as covered in this course, allows for the establishment of a higher quality standard.
Principal Engineer
A principal engineer is a senior technical leader responsible for setting the technical direction for a company and mentoring other engineers. Scala Applied, Part 2, explores Scala's features such as composition, inheritance, and traits. This helps principal engineers design and implement complex systems that meet business needs. The course's section on domain specific languages helps the principal engineer implement specialized solutions. Knowledge of testing, as covered in this course, will help establish a higher quality standard for all projects.
Backend Developer
A backend developer is responsible for the server-side logic and database interactions of a web application. This role requires proficiency in programming languages and frameworks. Scala Applied, Part 2, focuses on Scala-specific features such as traits and type hierarchies. This helps make a backend developer build efficient and scalable server-side applications. The course's section on domain specific languages also helps with the design of internal APIs. The course may also help the backend developer learn about testing practices to ensure the reliability of the backend services.
Data Engineer
A data engineer builds and maintains the infrastructure for data storage, processing, and analysis. They need to be proficient in programming languages and data manipulation techniques. Scala Applied, Part 2, may be useful as it covers advanced Scala concepts like type hierarchies, which are relevant when working with complex data structures. The course's emphasis on creating domain specific languages may also be applicable in data processing pipelines. The course might help data engineers write efficient and scalable data processing applications. An understanding of testing, as discussed in this course, helps the data engineer to validate data pipelines and ensure data quality.
Full-Stack Developer
A full stack developer works on both the front-end and back-end of web applications. They should be comfortable with a variety of programming languages and technologies. Scala Applied, Part 2, may be useful because it covers Scala's features. This may enable full stack developers to leverage Scala for back-end development. The course's sections on inheritance and abstract classes may also be useful when structuring server-side components. Full stack developers may improve their proficiency in Scala to develop scalable web applications using the testing processes taught in this course.
Quality Assurance Engineer
A quality assurance engineer is responsible for ensuring the quality of software products through testing and validation. Scala Applied, Part 2, may be useful because it covers unit testing in Scala. This can help quality assurance engineers write effective tests to identify and resolve defects. The course helps the quality assurance engineer to ensure the reliability of the software. The course could aid in the creation of robust and maintainable test suites.
Technology Consultant
A technology consultant advises organizations on how to use technology to achieve their business goals. This role requires knowledge of various programming languages, frameworks, and architectural patterns. Scala Applied, Part 2 explores Scala's features such as composition inheritance, and traits. This helps technology consultants recommend Scala-based solutions to clients. The course's section on packages, imports, and scope helps in the design of the software. The knowledge of testing, as covered in this course, helps to ensure higher quality in client solutions.
DevOps Engineer
A DevOps engineer automates and streamlines the software development lifecycle. This involves using various tools and technologies for continuous integration, continuous delivery, and infrastructure management. Scala Applied, Part 2, explores Scala-specific features that may be used in building automation tools. The course's coverage of domain specific languages may be helpful for configuring and managing infrastructure. The course may equip DevOps engineers with the Scala skills needed to develop and maintain efficient DevOps pipelines. By using the concepts of unit testing, a DevOps Engineer can ensure the integrity of the software and pipelines.
Build Engineer
A build engineer is responsible for creating and maintaining the build and release processes for software projects. Scala Applied, Part 2, may be useful because it covers Scala-specific features like composition and traits. This helps build engineers develop and maintain efficient build systems. The course's treatment of packages may also be relevant when managing dependencies. The course may help build engineers automate build and release processes more effectively. Furthermore, the emphasis on testing may guarantee quality in the builds.
Data Scientist
A data scientist analyzes large datasets to extract insights and build predictive models. This often involves using programming languages and statistical techniques. Scala Applied, Part 2, may be useful because it covers advanced Scala concepts. These concepts may be needed to preprocess and analyze data. The course's sections on type hierarchies may be relevant when working with complex data. The course may help data scientists develop more robust data analysis pipelines. The course helps the data scientist unit test the data pipelines.
Machine Learning Engineer
A machine learning engineer designs, develops, and deploys machine learning models. This requires a strong understanding of programming languages, machine learning algorithms, and data engineering principles. Scala Applied, Part 2, focuses on Scala-specific features. The course might help machine learning engineers better implement machine learning algorithms and pipelines in Scala. Although the course does not explicitly discuss machine learning, the focus on testing may prove useful when validating machine learning models. A machine learning engineer typically holds an advanced degree.

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 2.
Comprehensive guide to the Scala language, written by the creator of Scala, Martin Odersky. It covers all aspects of the language, from the basics to advanced topics. It useful reference tool for understanding the nuances of Scala's syntax and features. This book provides additional depth to the course material.
Provides practical advice on how to write clean, maintainable, and effective Scala code. It covers topics such as style, design, and best practices. It is particularly useful for understanding how to use Scala's features in a real-world setting. This book is more valuable as additional reading than it is as a current reference.

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