Learn Functional Programming in Scala in this online course brought to you by 47 Degrees Academy and led by Valentin Kasas.


Scala Fundamentals

In this intensive two-day course, we’ll cover Functional Programming essentials in Scala. By the end of this course, you will have a solid grasp on the Fundamentals of the language.

Course content

Session 1: the functional subset of Scala
  • An expression-based language and the substitution model
  • What is a pure function?
  • Higher-order functions
  • Recursion and tail-recursion


  • reimplement map and filter on lists using recursion
Session 2: A Scalable Language
  • Rules of syntactic sugar (apply methods, infix notation)
  • Understanding the implicit scope
  • The implicit resolution mechanism
  • Extension classes
  • Putting everything together to create new syntax


  • implement a byteSize syntax for base types and lists thereof
Session 3: Algebraic data types and typeclasses
  • The notion of ADT and their Scala encoding
  • Pattern-matching
  • Typeclasses and their encoding with implicits
  • A first taste of typeclasses with Monoid


  • Refactor a clunky domain model using ADT and typeclasses
  • Implement a variety of “voting systems” using monoids
Session 4: Functional error handling
  • Expressing missing values with Option
  • Expressing errors with Either
  • Accumulating errors with Validated
  • Avoiding boilerplate with Parallel


  • Validate a complex “form” (could be user input from the console)
Session 5: higher-kinded types
  • Definition of HKT
  • Easing syntax with kind-projector
Session 6: the Functor hierarchy
  • Preserving structure with Functor
  • Combining independent things with Applicative
  • Combining things sequentially with Monad
  • Combining things “inside-out” with Traverse


  • Reimplement our own versions of Either and Validated with instances for Functor & al.
Session 7: functional effects with cats-effects
  • IO as a pure value (representing a computation)
  • The cats-effects typeclass hierarchy
  • Managing resources properly with bracket
  • Thread-pool guidelines


  • Write a “parallel grep”: a program that searches for a string in text files in parallel.
Session 8: Putting everything together with Tagless-final style
  • Presentation of the tagless-final style
  • Using TF for “dependency injection”
  • Testing a TF app


  • Enhance the “parallel grep” program with interactive input (and validation)
  • Add tests for the app

After completion of this course, you will have access to an open Q&A with the trainers in the private course Slack channel.

  • $1100
  • -50%

Enroll for $550Starts on September 15 at 9 AM CET

  • Duration 2 Days
  • Category Instructor-Led Course
  • Complexity Beginner
  • Type Online
  • Grants
  • Finantial I would like to apply for financial aid.
  • FAQ Frequently Asked Questions


Valentin Kasas

Valentin Kasas

Solutions Architect


  • Scala
  • Functional Programming Essentials
  • Type classes
  • Error Handling
  • Output

This Instructor-Led Course includes:

  • Maximum Class Size of 15
  • Access to Academy EduTools Platform
  • Access to Course Materials
  • Certificate of Completion
  • Access to the Academy Slack


  • General Programming Skills in any Language

Frequently Asked Questions

Is this course 100% online?


How do I register interest for a course with no start date or future training dates?

You can join the Academy newsletter to stay posted about upcoming courses and events.

What if I can’t find a course?

Please email your thoughts and suggestions to academy@47deg.com, and we’ll get back to you as soon as possible.

Will I receive accreditation for a course?

For any paid training courses, we intend to launch an accreditation process after the launch of Academy. If you take a paid training course before this time, we’ll make sure to send an accreditation when we’re ready.

What tools do I need to access 47 Degrees Academy content?

The only thing you need is a modern web browser and Internet connection. For training courses with code workshops or downloadable code samples, the course specifics will include the necessary tools and instructions to get going.

Will I earn university credit for completing any training?

No, at this time, the courses are not intended to replace university or other formal education courses. If you are an academic or training institution with an interest in partnering or licensing content from Academy, please get in touch at academy@47deg.com.

What languages will the training be given in?

English is the common language across 47 Degrees. If you have an interest in supporting other languages, please let us know at academy@47deg.com.

Is financial aid available for underrepresented or low-income groups?

Our industry is not diverse enough across many measures of representation. Nor is it easily accessible to many minorities or those in low-income scenarios. If you feel that you belong to an underrepresented minority or need help financially, please fill this form. We can apply a course voucher to your registered Academy account. The voucher can be redeemed against any paid course on a one-time basis. The voucher is non-transferable, non-refundable, and has no financial value.

What is the refund policy?

If you request a refund for a paid training course before taking it, we will refund your course fee during our next processing cycle. If you request a refund for a paid training course after starting or accessing it, please email us at academy@47deg.com. Please refer to the full Terms and Conditions before requesting a refund. 47 Degrees reserves the right to refuse refunds.

Are these courses qualified for the FUNDAE (Fundación Tripartita)?

Part of the course cost is reimbursable for companies located in Spain, through Fundae ( formerly, Fundación Tripartita ). If this is your case, please contact us through academy@47deg.com before enrolling in a course.

Do you have more questions? Contact us