Scala for Backend Engineering and Functional Programming
Scala runs on the JVM and combines object-oriented and functional programming in a single, statically typed language. It powers the data infrastructure at companies like Twitter, LinkedIn, and Databricks — through frameworks like Apache Spark, Akka, and Play. This track covers Scala from its syntax and type system through production-grade backend development, concurrency, and advanced functional patterns.
Co się nauczysz
Zaczniesz od składni Scali, REPL, wartości, typów i pattern matchingu, a następnie przejdziesz do case classes, algebraicznych typów danych i modelu obsługi błędów Option/Either/Try. Następnie pracować będziesz z funkcjami wyższego rzędu, rekurencją ogonową, for-comprehensions i leniwą ewaluacją ze streamami. Tematy pośrednie obejmują implicits, type classes, generics, przetwarzanie JSON z Circe, REST API z http4s, programowanie asynchroniczne z Futures i pełny rozwój backendu za pomocą Play Framework. Zaawansowane kursy obejmują Cats i IO Monad, ZIO, funkcyjne modelowanie domeny, dostęp do bazy danych z Doobie, potoki danych z Akka Streams, systemy rozproszone z Akka Actors i wdrażanie mikrousług. Track kończy się metaprogramowaniem Scali, makrami i tuning wydajności.
Ścieżka nauczania
Czterdzieści kursów postępuje od A1 do C2. Kursy A1 i A2 ustalają fundamenty języka: składnię, kolekcje, stringi, tuples i pattern matching. Kursy B1 budują biegłość w programowaniu funkcyjnym — rekurencję, folding, leniwą listę, traits, immutability i narzędzie build SBT. B2 przechodzi do ekosystemu: type classes, Circe, Play, Spark, funkcje Scali 3 i programowanie asynchroniczne. Blok C1 odnosi się do zagadnień produkcyjnych — Cats IO, ZIO, Akka Actors, Akka Streams, Doobie i mikrousługi w chmurze. Track kończy się na C2 z Scala Metaprogramming and Macros i Performance Tuning and Optimization in Scala.
Jak to działa
Każdy kurs jest podzielony na krótkie, praktyczne lekcje, które ukończysz w wbudowanym edytorze kodu z opóźniającą się opinią. Tutor AI jest dostępny, gdy się zacinasz, a progresja jest zaprojektowana tak, aby każda koncepcja budowała się bezpośrednio na poprzedniej — bez przeskakiwania między zasobami zewnętrznymi.