Skip to main content

index

docs/
└── tutorials/
└── scala/
β”œβ”€β”€ index.mdx
β”œβ”€β”€ 01-introduction/
β”‚ β”œβ”€β”€ what-is-scala.mdx
β”‚ β”œβ”€β”€ why-learn-scala.mdx
β”‚ β”œβ”€β”€ scala-features.mdx
β”‚ β”œβ”€β”€ scala-vs-java.mdx
β”‚ β”œβ”€β”€ scala-2-vs-scala-3.mdx
β”‚ └── scala-use-cases.mdx
β”œβ”€β”€ 02-installation-and-setup/
β”‚ β”œβ”€β”€ install-jdk.mdx
β”‚ β”œβ”€β”€ install-scala.mdx
β”‚ β”œβ”€β”€ install-scala-cli.mdx
β”‚ β”œβ”€β”€ install-intellij-idea.mdx
β”‚ β”œβ”€β”€ scala-repl.mdx
β”‚ β”œβ”€β”€ sbt-setup.mdx
β”‚ └── first-scala-program.mdx
β”œβ”€β”€ 03-scala-fundamentals/
β”‚ β”œβ”€β”€ program-structure.mdx
β”‚ β”œβ”€β”€ variables-and-values.mdx
β”‚ β”œβ”€β”€ data-types.mdx
β”‚ β”œβ”€β”€ type-inference.mdx
β”‚ β”œβ”€β”€ operators.mdx
β”‚ β”œβ”€β”€ strings-and-interpolation.mdx
β”‚ β”œβ”€β”€ tuples.mdx
β”‚ β”œβ”€β”€ ranges.mdx
β”‚ └── expressions-and-statements.mdx
β”œβ”€β”€ 04-control-flow/
β”‚ β”œβ”€β”€ if-expressions.mdx
β”‚ β”œβ”€β”€ match-expressions.mdx
β”‚ β”œβ”€β”€ for-expressions.mdx
β”‚ β”œβ”€β”€ while-loops.mdx
β”‚ β”œβ”€β”€ guards-and-patterns.mdx
β”‚ β”œβ”€β”€ indentation-and-braces.mdx
β”‚ └── control-flow-best-practices.mdx
β”œβ”€β”€ 05-functions-and-methods/
β”‚ β”œβ”€β”€ defining-methods.mdx
β”‚ β”œβ”€β”€ parameters-and-return-types.mdx
β”‚ β”œβ”€β”€ default-and-named-arguments.mdx
β”‚ β”œβ”€β”€ multiple-parameter-lists.mdx
β”‚ β”œβ”€β”€ anonymous-functions.mdx
β”‚ β”œβ”€β”€ higher-order-functions.mdx
β”‚ β”œβ”€β”€ methods-vs-functions.mdx
β”‚ └── recursion.mdx
β”œβ”€β”€ 06-collections/
β”‚ β”œβ”€β”€ collection-overview.mdx
β”‚ β”œβ”€β”€ lists-and-vectors.mdx
β”‚ β”œβ”€β”€ sets.mdx
β”‚ β”œβ”€β”€ maps.mdx
β”‚ β”œβ”€β”€ arrays.mdx
β”‚ β”œβ”€β”€ immutable-and-mutable-collections.mdx
β”‚ β”œβ”€β”€ map-filter-and-fold.mdx
β”‚ β”œβ”€β”€ collection-transformations.mdx
β”‚ └── lazy-collections.mdx
β”œβ”€β”€ 07-object-oriented-programming/
β”‚ β”œβ”€β”€ classes-and-objects.mdx
β”‚ β”œβ”€β”€ constructors-and-parameters.mdx
β”‚ β”œβ”€β”€ fields-and-methods.mdx
β”‚ β”œβ”€β”€ inheritance.mdx
β”‚ β”œβ”€β”€ abstract-classes.mdx
β”‚ β”œβ”€β”€ traits.mdx
β”‚ β”œβ”€β”€ companion-objects.mdx
β”‚ β”œβ”€β”€ enums.mdx
β”‚ └── object-composition.mdx
β”œβ”€β”€ 08-functional-programming/
β”‚ β”œβ”€β”€ functional-programming-overview.mdx
β”‚ β”œβ”€β”€ pure-functions.mdx
β”‚ β”œβ”€β”€ immutability.mdx
β”‚ β”œβ”€β”€ function-composition.mdx
β”‚ β”œβ”€β”€ currying-and-partial-application.mdx
β”‚ β”œβ”€β”€ map-flatmap-and-fold.mdx
β”‚ β”œβ”€β”€ options-and-null-handling.mdx
β”‚ β”œβ”€β”€ either-and-error-modeling.mdx
β”‚ β”œβ”€β”€ for-comprehensions.mdx
β”‚ └── functional-design-principles.mdx
β”œβ”€β”€ 09-pattern-matching-and-algebraic-data-types/
β”‚ β”œβ”€β”€ pattern-matching.mdx
β”‚ β”œβ”€β”€ case-classes.mdx
β”‚ β”œβ”€β”€ enums-and-sum-types.mdx
β”‚ β”œβ”€β”€ sealed-traits.mdx
β”‚ β”œβ”€β”€ product-types.mdx
β”‚ β”œβ”€β”€ extractor-patterns.mdx
β”‚ β”œβ”€β”€ typed-patterns.mdx
β”‚ └── exhaustive-matching.mdx
β”œβ”€β”€ 10-type-system/
β”‚ β”œβ”€β”€ static-typing.mdx
β”‚ β”œβ”€β”€ generic-types.mdx
β”‚ β”œβ”€β”€ variance.mdx
β”‚ β”œβ”€β”€ upper-and-lower-type-bounds.mdx
β”‚ β”œβ”€β”€ type-classes.mdx
β”‚ β”œβ”€β”€ givens-and-using.mdx
β”‚ β”œβ”€β”€ extension-methods.mdx
β”‚ β”œβ”€β”€ opaque-types.mdx
β”‚ β”œβ”€β”€ union-and-intersection-types.mdx
β”‚ β”œβ”€β”€ match-types.mdx
β”‚ └── contextual-abstractions.mdx
β”œβ”€β”€ 11-error-handling/
β”‚ β”œβ”€β”€ exceptions.mdx
β”‚ β”œβ”€β”€ option-for-optional-values.mdx
β”‚ β”œβ”€β”€ either-for-errors.mdx
β”‚ β”œβ”€β”€ try-and-failure.mdx
β”‚ β”œβ”€β”€ custom-error-types.mdx
β”‚ β”œβ”€β”€ validation-patterns.mdx
β”‚ └── error-handling-best-practices.mdx
β”œβ”€β”€ 12-implicits-and-scala-3-contexts/
β”‚ β”œβ”€β”€ scala-2-implicit-overview.mdx
β”‚ β”œβ”€β”€ scala-3-given-instances.mdx
β”‚ β”œβ”€β”€ using-clauses.mdx
β”‚ β”œβ”€β”€ contextual-functions.mdx
β”‚ β”œβ”€β”€ extension-methods.mdx
β”‚ └── migration-notes.mdx
β”œβ”€β”€ 13-concurrency-and-asynchronous/
β”‚ β”œβ”€β”€ jvm-concurrency-overview.mdx
β”‚ β”œβ”€β”€ futures-and-promises.mdx
β”‚ β”œβ”€β”€ execution-contexts.mdx
β”‚ β”œβ”€β”€ parallel-collections.mdx
β”‚ β”œβ”€β”€ thread-safety.mdx
β”‚ β”œβ”€β”€ cats-effect-introduction.mdx
β”‚ β”œβ”€β”€ zio-introduction.mdx
β”‚ └── asynchronous-design-patterns.mdx
β”œβ”€β”€ 14-files-and-serialization/
β”‚ β”œβ”€β”€ file-reading-and-writing.mdx
β”‚ β”œβ”€β”€ paths-and-directories.mdx
β”‚ β”œβ”€β”€ csv-processing.mdx
β”‚ β”œβ”€β”€ json-processing.mdx
β”‚ β”œβ”€β”€ json-library-comparison.mdx
β”‚ β”œβ”€β”€ configuration-files.mdx
β”‚ └── environment-variables.mdx
β”œβ”€β”€ 15-build-tools-and-projects/
β”‚ β”œβ”€β”€ scala-cli-projects.mdx
β”‚ β”œβ”€β”€ sbt-project-structure.mdx
β”‚ β”œβ”€β”€ build-sbt-basics.mdx
β”‚ β”œβ”€β”€ dependencies-and-repositories.mdx
β”‚ β”œβ”€β”€ multi-module-projects.mdx
β”‚ β”œβ”€β”€ testing-and-build-tasks.mdx
β”‚ β”œβ”€β”€ publishing-libraries.mdx
β”‚ └── cross-building-scala-versions.mdx
β”œβ”€β”€ 16-testing-and-code-quality/
β”‚ β”œβ”€β”€ testing-fundamentals.mdx
β”‚ β”œβ”€β”€ scala-test.mdx
β”‚ β”œβ”€β”€ munit.mdx
β”‚ β”œβ”€β”€ property-based-testing.mdx
β”‚ β”œβ”€β”€ mocking-and-test-doubles.mdx
β”‚ β”œβ”€β”€ integration-testing.mdx
β”‚ β”œβ”€β”€ formatting-and-scalafmt.mdx
β”‚ β”œβ”€β”€ static-analysis.mdx
β”‚ └── continuous-integration.mdx
β”œβ”€β”€ 17-java-interoperability/
β”‚ β”œβ”€β”€ scala-on-the-jvm.mdx
β”‚ β”œβ”€β”€ calling-java-from-scala.mdx
β”‚ β”œβ”€β”€ calling-scala-from-java.mdx
β”‚ β”œβ”€β”€ java-collections-interop.mdx
β”‚ β”œβ”€β”€ jvm-annotations.mdx
β”‚ └── java-library-integration.mdx
β”œβ”€β”€ 18-backend-development/
β”‚ β”œβ”€β”€ scala-backend-overview.mdx
β”‚ β”œβ”€β”€ http-api-fundamentals.mdx
β”‚ β”œβ”€β”€ http4s-introduction.mdx
β”‚ β”œβ”€β”€ akka-and-pekko-overview.mdx
β”‚ β”œβ”€β”€ database-access.mdx
β”‚ β”œβ”€β”€ doobie-introduction.mdx
β”‚ β”œβ”€β”€ authentication-and-authorization.mdx
β”‚ β”œβ”€β”€ logging-and-monitoring.mdx
β”‚ └── backend-deployment.mdx
β”œβ”€β”€ 19-data-engineering/
β”‚ β”œβ”€β”€ scala-for-data-engineering.mdx
β”‚ β”œβ”€β”€ spark-introduction.mdx
β”‚ β”œβ”€β”€ spark-dataframes.mdx
β”‚ β”œβ”€β”€ spark-sql.mdx
β”‚ β”œβ”€β”€ transformations-and-aggregations.mdx
β”‚ β”œβ”€β”€ batch-processing.mdx
β”‚ └── data-pipeline-project.mdx
β”œβ”€β”€ 20-performance-and-advanced-topics/
β”‚ β”œβ”€β”€ jvm-memory-basics.mdx
β”‚ β”œβ”€β”€ profiling-and-benchmarking.mdx
β”‚ β”œβ”€β”€ allocation-and-collections.mdx
β”‚ β”œβ”€β”€ inline-and-erased-definitions.mdx
β”‚ β”œβ”€β”€ macros-overview.mdx
β”‚ β”œβ”€β”€ compile-time-metaprogramming.mdx
β”‚ └── performance-best-practices.mdx
β”œβ”€β”€ 21-projects/
β”‚ β”œβ”€β”€ command-line-calculator.mdx
β”‚ β”œβ”€β”€ expense-tracker.mdx
β”‚ β”œβ”€β”€ file-processing-tool.mdx
β”‚ β”œβ”€β”€ rest-api-service.mdx
β”‚ β”œβ”€β”€ concurrent-web-client.mdx
β”‚ β”œβ”€β”€ spark-data-pipeline.mdx
β”‚ └── capstone-project.mdx
β”œβ”€β”€ reference/
β”‚ β”œβ”€β”€ scala-cheatsheet.mdx
β”‚ β”œβ”€β”€ syntax-reference.mdx
β”‚ β”œβ”€β”€ collections-reference.mdx
β”‚ β”œβ”€β”€ type-system-reference.mdx
β”‚ β”œβ”€β”€ scala-cli-commands.mdx
β”‚ β”œβ”€β”€ sbt-command-reference.mdx
β”‚ β”œβ”€β”€ common-errors.mdx
β”‚ β”œβ”€β”€ glossary.mdx
β”‚ └── official-resources.mdx
└── assets/
β”œβ”€β”€ images/
β”œβ”€β”€ diagrams/
└── examples/