The 2021 Q1-Q2 bootcamp has the following tentative schedule:
2021-* | Topics | Responsible | Materials | |
---|---|---|---|---|
01-26 | Introduction and basic Scala Syntax (types, functions, parametric polymorphism) | @jurisk | Basics (t) | |
01-28 | Classes & Traits and some Control Structures: if -else , pattern matching |
@olga-shuleyko | Classes & Traits (t) | |
02-02 | Control Structures: recursion, map , flatMap , filter , for -comprehensions |
@olga-shuleyko | Control Structures (t) | |
02-04 | Data Structures ([im]mutable, Array , List , Map , tuples) |
@nikalaikina | Data Structures (t) | |
02-09 | Functions ([im]pure, total/partial) & Algebraic Data Types - role in functional design, using them | @AiiR42 | Functions (t) , ADTs (t) | |
02-11 | SBT, single- vs multi-module projects | @efemelar @scandinaf | ||
02-16 | Structure of Scala Applications, "package-by-feature" | @efemelar @scandinaf | ||
02-18 | Implicits | @nikalaikina, @AiiR42 | Implicits (t) | |
02-23 | Higher Kinded Types - "kind projector" | @nikalaikina, @AiiR42 | HigherKindedTypes | |
02-25 | Type Classes | @nikalaikina, @AiiR42 | CodecsExercise, FoldableExercise (hw, hwt) | |
03-02 | Questions & Answers - covering gaps, design & coding practice | N/A | ||
03-04 | Error Handling - Option , Either , Try , Validated , encoding errors as ADTs |
@AiiR42 | Error Handling (t) | |
03-09 | Processing JSON using Circe, writing custom coders and decoders | @dlinov | JSON (t, hw) | |
03-11 | Unit Testing - Benefits, testing pyramid, ScalaTest, structuring code to be testable | @kurnevsky | Testing | |
03-16 | Cats - cats-core introduction, Monad Transformers |
@nikalaikina | Cats (t) | |
03-18 | Tagless Final | @x0ji0d | ||
03-23 | Asynchronous Programming - JVM threads, perils of critical sections using synchronized , Atomic* |
@scandinaf | Presentation (examples) (hw) | |
03-30 | Effects - Cats Effect IO | @x0ji0d | Effects (t) | |
04-01 | Effects continued - Fibers, Resources, ContextShift | @scandinaf | ||
04-06 | Unit Testing Advanced | @kurnevsky | ||
04-08 | Shared State in FP - Ref-s, MVar-s, etc. | @x0ji0d | ||
04-13 | IO and TF practice | @x0ji0d | ||
04-15 | HTTP REST with http4s | @kurnevsky | HTTP (t) | |
04-20 | WebSocket with http4s | @kurnevsky | WebSocket | |
04-22 | Containers - Docker and Kubernetes | @scandinaf | Project (Presentation) | |
04-27 | Working with Databases from Scala: JDBC, Slick, Doobie | @dlinov | Databases | |
04-29 | Akka - Actors and other Akka features | @anton2larionov | Lecture (examples) (hw) | |
05-04 | Event Sourcing using Akka Persistence and CQRS | @mikla | ||
05-06 | Development Practices & Processes - Agile, Code Reviews, Testing, CI/CD | @jurisk | ||
05-11 | Work on Course Projects | N/A | ||
05-13 | Work on Course Projects | N/A | ||
05-18 | Work on Course Projects | N/A | ||
05-20 | Presentation of Course Projects to mentors & each other | @jurisk | ||
05-25 | Presentation of Course Projects to mentors & each other - continued | @jurisk | ||
05-27 | Graduation - Discussion of course results, free-form Q&A session | @jurisk |
The schedule will be adjusted according to learning progress.