Belajar Scala dari dasar hingga production-grade: pre-requisites skill & setup environment, sejarah latar belakang & mengapa membutuhkannya, konsep dasar & arsitektur utama, instalasi & hello world, sintaks dasar val var & fungsi, tipe data & type system, collections & immutable data, pattern matching & ADT, object-oriented class trait & object, sbt & build tooling, testing MUnit & ScalaTest, functional effects cats-effect & ZIO, concurrency & parallelism, backend services http4s & Tapir, data & big data Spark & Kafka, database & persistence, error handling & validation, keamanan & best practice, interop dengan Java, testing lanjut & property-based, Scala 3.8 & fitur terbaru, performance & optimization, hingga ekosistem alternatif & refleksi akhir dengan total 23 episode.
Sebelum menyentuh Scala, kalian perlu menguasai dasar pemrograman, konsep immutability, tipe data, dan sedikit fondasi JVM. Di episode ini kalian juga menyiapkan JDK 17+, memasang Coursier dengan compiler scala dan scalac, mengkonfigurasi editor VS Code bersama Metals, lalu memverifikasi seluruh environment siap dipakai sepanjang series.

Menelusuri perjalanan Scala dari riset Martin Odersky di EPFL (rilis pertama 2004) hingga Scala 3 yang dirancang ulang pada 2021, serta memahami filosofi "scalable" di balik namanya, alasan OOP dan FP bisa hidup dalam satu bahasa, dan mengapa ekosistem big data seperti Apache Spark dan Kafka bergantung padanya.

Membongkar arsitektur Scala: bagaimana scalac mengkompilasi source code menjadi bytecode JVM, peran scala runner, REPL, dan format TASTy dalam interoperabilitas antar versi, serta dukungan lintas platform lewat Scala.js dan Scala Native.

Memastikan toolchain Scala terpasang dengan benar via Coursier, menulis dan menjalankan Hello World pertama dengan @main, serta mengenal tiga jalur eksekusi: scala run untuk file tunggal, kompilasi eksplisit dengan scalac, dan eksperimen cepat di REPL.

Menguasai dua cara mendeklarasikan nilai di Scala — val immutable yang dianjurkan dan var mutable yang dibatasi — beserta type inference dan fungsi: parameter bertipe, default arguments, named arguments, hingga single-expression body yang menjadi ciri khas gaya functional Scala.

Membedah type system Scala yang ekspresif: tipe primitif dan Unit, container yang menghilangkan null (Option, Either, Tuple), lalu mekanisme pendefinisian tipe sendiri lewat case class, enum, given dan using untuk typeclass, serta opaque type untuk abstraksi yang aman.

Menguasai collections Scala yang immutable secara default: List, Vector, Map, dan Set, ditambah transformasi inti map, filter, flatMap, dan fold yang menjadi pola kerja harian — plus string interpolation dan cara memilih struktur data yang tepat untuk setiap kasus.

Menguasai match expression di Scala 3 — wildcard, guards, dan destructuring — lalu memodelkan domain dengan Algebraic Data Type memakai enum dan case class, plus perbandingannya dengan sealed trait gaya Scala 2.

Menguasai sisi object-oriented Scala: class dengan constructor params, inheritance, trait sebagai mekanisme mixin untuk komposisi perilaku yang lebih fleksibel daripada multiple inheritance, serta object singleton dan companion yang menghubungkan statika dengan instance.

Pindah dari file tunggal ke proyek formal dengan sbt: build.sbt dengan scalaVersion dan libraryDependencies, struktur project, dan siklus compile, test, dan run — plus Scala CLI dengan using directives dan Mill sebagai alternatif build modern.
