Chapter 1: Introduction to Scala
- Lesson 1: What is Scala?
- Lesson 2: History and Evolution of Scala
- Lesson 3: Scala Applications and Use Cases
- Lesson 4: Setting Up the Scala Environment (sbt, IDEs, and REPL)
- Lesson 5: Writing Your First Scala Program
- Lesson 6: Introduction to Scala Syntax
- Lesson 7: Working with IntelliJ IDEA and VS Code for Scala
Chapter 2: Variables, Data Types, and Immutability
- Lesson 1: Variables and Values in Scala
- Lesson 2: Declaring and Initializing Variables
- Lesson 3: Reserved Keywords in Scala
- Lesson 4: Scala Data Types: Int, Double, String, Boolean, etc.
- Lesson 5: Immutability and val vs var
- Lesson 6: Type Inference in Scala
- Lesson 7: Working with Option and Some/None
Chapter 3: Operators in Scala
- Lesson 1: Arithmetic Operators
- Lesson 2: Relational and Comparison Operators
- Lesson 3: Logical Operators
- Lesson 4: Bitwise Operators
- Lesson 5: Assignment Operators
- Lesson 6: Operator Overloading in Scala
Chapter 4: Control Structures
- Lesson 1: Introduction to Control Flow
- Lesson 2: if-else Statements and Expressions
- Lesson 3: Pattern Matching and case Expressions
- Lesson 4: Loops: for, while, and do-while
- Lesson 5: Break and Continue in Scala (Using Scala’s breakable)
- Lesson 6: Guards in Pattern Matching
Chapter 5: Functions and Methods
- Lesson 1: Introduction to Functions
- Lesson 2: Function Declaration and Invocation
- Lesson 3: Higher-Order Functions
- Lesson 4: Anonymous Functions (Lambdas)
- Lesson 5: Currying and Partially Applied Functions
- Lesson 6: Method Overloading in Scala
- Lesson 7: Recursion in Scala
- Lesson 8: Using Default and Named Arguments
- Lesson 9: Nested Methods
- Lesson 10: Polymorphic Methods
- Lesson 11: By-name Parameters
- Lesson 12: Multiple Parameter Lists (Currying)
Chapter 6: Collections in Scala
- Lesson 1: Introduction to Collections
- Lesson 2: Immutable vs Mutable Collections
- Lesson 3: Lists, Sets, and Maps
- Lesson 4: Working with Tuples and Pairs
- Lesson 5: Working with Arrays and ArrayBuffer
- Lesson 6: Functional Operations: map, filter, reduce, and fold
- Lesson 7: Iterators and Streams
- Lesson 8: Working with Option and Either
- Lesson 9: Generic Classes
- Lesson 10: Upper and Lower Type Bounds
- Lesson 11: Variances
Chapter 7: Object-Oriented Programming in Scala
- Lesson 1: Introduction to OOP in Scala
- Lesson 2: Classes and Objects
- Lesson 3: Constructors and Auxiliary Constructors
- Lesson 4: Access Modifiers
- Lesson 5: Traits and Mixins
- Lesson 6: Class Composition with Mixins
- Lesson 7: Abstract Classes and Sealed Classes
- Lesson 8: Case Classes and Case Objects
- Lesson 9: Companion Objects
- Lesson 10: Inner Classes
- Lesson 11: Abstract Type Members
Chapter 8: Exception Handling
- Lesson 1: Basics of Exception Handling in Scala
- Lesson 2: try, catch, and finally Blocks
- Lesson 3: Custom Exceptions
- Lesson 4: Working with Either and Try for Safe Code
Chapter 9: Working with Strings
- Lesson 1: Strings in Scala: Basics
- Lesson 2: String Interpolation (s, f, and raw Strings)
- Lesson 3: String Methods and Operations
- Lesson 4: Regular Expressions in Scala
- Lesson 5: Working with StringBuilder
Chapter 10: Working with Date and Time
- Lesson 1: Basics of Date and Time Handling in Scala
- Lesson 2: Working with LocalDate, LocalTime, and ZonedDateTime
- Lesson 3: Date Formatting and Parsing
- Lesson 4: Calculating Durations and Periods
- Lesson 5: Using java.time with Scala
Chapter 11: Packages and Imports
- Lesson 1: Packages and Imports Basics
- Lesson 2: Creating and Using Package Objects
- Lesson 3: Managing Visibility and Scope
Chapter 1: Functional Programming in Scala
- Lesson 1: Introduction to Functional Programming
- Lesson 2: Pure Functions and Referential Transparency
- Lesson 3: Immutability in FP
- Lesson 4: Closures in Scala
- Lesson 5: Lazy Evaluation
- Lesson 6: Monad Basics and Usage
- Lesson 7: Functors and Applicatives
- Lesson 8: Working with Cats and Scalaz Libraries
- Lesson 9: Self-Type
- Lesson 10: Compound Types
- Lesson 11: Implicit Parameters
- Lesson 12: Implicit Conversions
Chapter 2: Concurrency, Parallelism, and Multithreading
- Lesson 1: Introduction to Concurrency in Scala
- Lesson 2: Futures and Promises
- Lesson 3: Using Scala’s ExecutionContext
- Lesson 4: Working with Akka Actors
- Lesson 5: Akka Streams
- Lesson 6: Parallel Collections
- Lesson 7: Asynchronous Programming Techniques
- Lesson 8: Multithreading Basics in Scala
- Lesson 9: Synchronization and Locks
- Lesson 10: Thread Safety and Best Practices
Chapter 3: Advanced Pattern Matching
- Lesson 1: Deep Pattern Matching
- Lesson 2: Extractors and Unapply Methods
- Lesson 3: Pattern Matching with Types
- Lesson 4: Advanced Guards in Patterns
Chapter 4: Working with Files and I/O
- Lesson 1: File Handling Basics in Scala
- Lesson 2: Reading and Writing Files
- Lesson 3: JSON Parsing with Circe and Play JSON
- Lesson 4: Working with CSV and XML Files
- Lesson 5: Streaming Data with Akka Streams
Chapter 5: Modern Scala Features
- Lesson 1: Overview of Scala 3 Features
- Lesson 2: Intersection and Union Types
- Lesson 3: New Syntax Enhancements
- Lesson 4: Contextual Abstractions (given/using)
- Lesson 5: Inline and Transparent Functions
- Lesson 6: Explicit Nulls
- Lesson 7: Type-Level Programming in Scala 3
Chapter 6: Testing in Scala
- Lesson 1: Basics of Testing in Software Development
- Lesson 2: Unit Testing with ScalaTest
- Lesson 3: Property-Based Testing with ScalaCheck
- Lesson 4: Mocking in Unit Tests
- Lesson 5: Writing Integration Tests
- Lesson 6: Code Coverage Analysis
Chapter 7: Scala and Big Data
- Lesson 1: Introduction to Big Data with Scala
- Lesson 2: Apache Spark Basics
- Lesson 3: Writing Spark Applications in Scala
- Lesson 4: RDDs, DataFrames, and Datasets
- Lesson 5: Optimizing Spark Jobs
- Lesson 6: Using Spark Streaming
Chapter 8: Building Applications in Scala
- Lesson 1: Introduction to sbt
- Lesson 2: Creating and Managing sbt Projects
- Lesson 3: Packaging and Deploying Scala Applications
- Lesson 4: Building REST APIs with Play Framework
- Lesson 5: Web Development with Scala.js
- Lesson 6: How to Build a Scala Library
Chapter 9: Scala Design Patterns
- Lesson 1: What are Design Patterns?
- Lesson 2: Creational Patterns | Singleton, Factory Method, Abstract Factory, Builder, Prototype
- Lesson 3: Structural Patterns | Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
- Lesson 4: Behavioral Patterns | Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor
Chapter 10: GUI Development with ScalaFX
- Lesson 1: Introduction to ScalaFX
- Lesson 2: Setting Up ScalaFX Projects
- Lesson 3: Building Simple GUI Applications
- Lesson 4: Event Handling and Layout Management
- Lesson 5: Advanced GUI Features and Custom Controls
Chapter 11: Networking and Socket Programming in Scala Using Akka and Actors
- Lesson 1: Basics of Socket Programming
- Lesson 2: Setting Up Akka for Networking
- Lesson 3: Implementing Client-Server Communication
- Lesson 4: Building a Chat Application with Akka Actors
- Lesson 5: Handling Networking Errors and Failures
Chapter 12: Advanced Topics
- Lesson 1: Reflection and Macros
- Lesson 2: Advanced Type System in Scala
- Lesson 3: Working with Implicit Conversions
- Lesson 4: Metaprogramming with Scala
- Lesson 5: Performance Optimization Techniques
- Lesson 6: Interaction Between Java and Scala Classes and Libraries