Three-Project Series

Scala Functional Design and Implementation you own this product

prerequisites
basic programming skills (algorithms and data structures, debugging) • object-oriented programming (creating objects and classes, using four main principles)
skills learned
system design with UML diagrams and Scala code • software engineering with Scala (immutable data structures, pattern matching, higher-order functions, partial functions) • unit testing with Scala
Roksolana Diachuk
3 weeks · 5-7 hours per week average · BEGINNER

pro $24.99 per month

  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose one free eBook per month to keep
  • exclusive 50% discount on all purchases

lite $19.99 per month

  • access to all Manning books, including MEAPs!

team

5, 10 or 20 seats+ for your team - learn more


Step into the role of a software engineer at TechPower, a consulting company that’s building an independent music-sharing platform where new artists can upload their music to gain exposure. For this project, TechPower has chosen Scala—a language that combines object-oriented programming and functional programming—in hopes of being able to engage engineers with different backgrounds. You’ll set up your environment to prepare for running a project in Scala and implement your design with Scala classes and traits. You’ll apply functional programming concepts as you add features and functionality that will help musical artists showcase their talents. To ensure the platform is robust, reliable, and ready for showtime, you’ll design, create, and implement tests that cover all reasonable scenarios. By the end of this series, you’ll have the skills and knowledge to design, build, and test a Scala system using Scala tools, including Simple Build Tool (SBT), IntelliJ IDEA, and specs2.

These projects are designed for learning purposes and are not complete, production-ready applications or solutions.

The project is a great introduction to many important techniques, going from designing a UML diagram to implementation and testing.

José Antonio Cano Rodríguez, Freelance developer

here's what's included

Project 1 Design System Functions

You’re a software engineer at TechPower, a consulting company that wants to expand its reach in the tech market by incorporating more programming languages and technologies. This will help it create products while hiring from a more diverse pool of engineers. For TechPower’s latest project, your task is to design an independent music-sharing platform where new artists can upload their music, putting it in front of new eyes (and ears!) for free. Using Simple Build Tool (SBT) and IntelliJ IDEA, you’ll set up your environment to prepare for running a project in Scala, a language that combines object-oriented programming and the functional paradigm. Keeping in mind the platform's users and the kinds of content it will host, you’ll define the main entities and dependencies as part of a Unified Modeling Language (UML) diagram. You’ll implement your design with Scala classes and traits, preparing the utility for function additions later on.

Project 2 Implement Functions and Refactor

TechPower wants to grow in the tech market and enhance its presence by adding new technologies to its toolbox. Scala is a good option as it combines functional and object-oriented programming paradigms. As a software engineer, your task is to add features and functionality to the consulting company’s current project: a music-sharing platform where artists can share their music with the world. Using Scala, Simple Build Tool (SBT), and IntelliJ IDEA, you’ll design and implement functions for previously defined entities, then improve them by refactoring. When you’re done, you’ll know how to apply functional programming concepts to designing and implementing system functionality in a Scala project.

Project 3 Unit Test the Prototype

It’s almost showtime! TechPower, a consulting company, has a partially implemented music-sharing platform, created in Scala, that leverages the language’s combination of object-oriented programming and the functional paradigm. As a software engineer at TechPower, your task is to ensure the prototype’s codebase hits a high note before going live. With the help of the Scala ecosystem libraries, you’ll design and create test specifications and samples, keeping in mind functionality, possible outcomes, and data values. You’ll implement your tests using SimpleBuild Tool (SBT) or IntelliJ IDEA, debug them, check corner cases, and verify that you’ve covered all reasonable scenarios. When you’re done, TechPower’s music-sharing platform will be robust, reliable, and ready for the spotlight!

book resources

When you start each of the projects in this series, you'll get full access to the following book for 90 days.

choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • Scala Functional Design and Implementation project for free

This learning and the step-by-step execution model was new and awesome.

Vaidyanathan Radhakrishnan, tech lead, Reserve Bank of Australia

project author

Roksolana Diachuk

Roksolana Diachuk puts her passion for big data, Scala, and Kubernetes to good use as an engineering manager at Captify. She’s a proud member of the Women Who Code Kyiv and Scala Ukraine communities, and she’s shared her expertise by speaking at Scala and big-data conferences in Europe and the U.S., including ScalaCon 2021/2022, Functional Scala London 2020/2021/2022, Scala Love 2021, and DataCon LA 2021.

Prerequisites

This liveProject is for beginner-level developers who know the basics of at least one language and are interested in learning Scala as well as the functional approach to system design. To begin these liveProjects you’ll need to be familiar with the following:

TOOLS
  • Any programming language (preferably JVM languages)
  • Basic Bash
  • Any development environment
TECHNIQUES
  • Basic programming
  • Basic object-oriented programming (OOP)
  • Basic unit testing

features

Self-paced
You choose the schedule and decide how much time to invest as you build your project.
Project roadmap
Each project is divided into several achievable steps.
Get Help
While within the liveProject platform, get help from other participants and our expert mentors.
Compare with others
For each step, compare your deliverable to the solutions by the author and other participants.
book resources
Get full access to select books for 90 days. Permanent access to excerpts from Manning products are also included, as well as references to other resources.