Chapter 1: Introduction to F#
- Lesson 1: What is F#?
- Lesson 2: History of F# and .NET
- Lesson 3: Functional-first Programming Paradigm
- Lesson 4: F# Applications and Use Cases
- Lesson 5: Setting Up the F# Development Environment
- Lesson 6: Writing Your First F# Program
- Lesson 7: Introduction to F# Syntax
- Lesson 8: Working with Visual Studio / Visual Studio Code / JetBrains Rider
Chapter 2: Variables and Data Types
- Lesson 1: What are Variables in F#?
- Lesson 2: Immutability and the let Keyword
- Lesson 3: Reserved Keywords in F#
- Lesson 4: F# Data Types: int, float, char, string, bool, unit, etc.
- Lesson 5: Type Inference in F#
- Lesson 6: Reference vs. Value Types in F#
- Lesson 7: Mutable Variables with mutable Keyword
- Lesson 8: Tuples and Records
Chapter 3: Operators in F#
- Lesson 1: Arithmetic Operators
- Lesson 2: Relational and Comparison Operators
- Lesson 3: Logical Operators
- Lesson 4: Bitwise and Shift Operators
- Lesson 5: Function Composition Operators
- Lesson 6: Pipeline Operators (|> and <|)
- Lesson 7: Pattern Matching Operators
- Lesson 8: Operator Overloading
Chapter 4: Control Structures
- Lesson 1: Introduction to Control Flow
- Lesson 2: Conditional Expressions: if, elif, else
- Lesson 3: Pattern Matching with match Expressions
- Lesson 4: Loops: for, while, do
- Lesson 5: Recursion as an Alternative to Loops
- Lesson 6: Working with Sequences and Iteration
- Lesson 7: Higher-Order Functions for Flow Control
Chapter 5: Functions and Methods
- Lesson 1: Introduction to Functions
- Lesson 2: Function Declaration and Invocation
- Lesson 3: Recursive Functions
- Lesson 4: Function Composition
- Lesson 5: Partial Application and Currying
- Lesson 6: Anonymous Functions (fun Keyword)
- Lesson 7: Lambda Expressions
- Lesson 8: Higher-Order Functions
- Lesson 9: Modules and Namespaces
Chapter 6: Enumerations and Discriminated Unions
- Lesson 1: Introduction to Enumerations in F#
- Lesson 2: Declaring and Using enum
- Lesson 3: Introduction to Discriminated Unions
- Lesson 4: Pattern Matching with Discriminated Unions
- Lesson 5: Practical Use Cases for Discriminated Unions
Chapter 7: Lists, Arrays and Sequences
- Lesson 1: Working with Lists (list)
- Lesson 2: Working with Arrays (array)
- Lesson 3: Working with Sequences (seq)
- Lesson 4: List Operations: Map, Filter, Reduce
- Lesson 5: Immutable and Mutable Collections
Chapter 8: Working with Strings
- Lesson 1: String Basics in F#
- Lesson 2: String Manipulation and Common Methods
- Lesson 3: Working with StringBuilder
- Lesson 4: Regular Expressions in F#
- Lesson 5: String Interpolation and Formatting
Chapter 9: Object-Oriented Programming in F#
- Lesson 1: Introduction to Object-Oriented Features
- Lesson 2: Classes and Objects in F#
- Lesson 3: Encapsulation and Access Modifiers
- Lesson 4: Properties and Methods
- Lesson 5: Interfaces in F#
- Lesson 6: Inheritance and Polymorphism
- Lesson 7: Records and Immutability
Chapter 10: Exception Handling
- Lesson 1: Basics of Exception Handling
- Lesson 2: try, with, and finally Blocks
- Lesson 3: Custom Exceptions
- Lesson 4: Exception Propagation in Functional Programming
Chapter 1: Modern F# Features
- Lesson 1: New Features in Recent F# Versions
- Lesson 2: Anonymous Records
- Lesson 3: Struct Tuples and Struct Records
- Lesson 4: String Interpolation Enhancements
- Lesson 5: New Pattern Matching Enhancements
Chapter 2: File I/O and Serialization
- Lesson 1: Reading and Writing Files in F#
- Lesson 2: JSON and XML Serialization
- Lesson 3: Using Streams
- Lesson 4: Working with CSV and Other Data Formats
Chapter 3: Asynchronous Programming
- Lesson 1: Introduction to Async Workflows
- Lesson 2: async Keyword and Workflows
- Lesson 3: Using Task and Task<T>
- Lesson 4: Parallel Processing with Parallel.ForEach
- Lesson 5: Handling Cancellations
Chapter 4: Multithreading and Concurrency
- Lesson 1: Introduction to Concurrency in F#
- Lesson 2: Using Async.Parallel
- Lesson 3: Using MailboxProcessor for Message-Passing Concurrency
- Lesson 4: Thread Safety and Synchronization
Chapter 5: Functional Programming Deep Dive
- Lesson 1: Functors and Applicative Functors
- Lesson 2: Monads in F#
- Lesson 3: The Option Type and Error Handling
- Lesson 4: Computation Expressions
Chapter 6: Creating Libraries in F#
- Lesson 1: Structuring an F# Library
- Lesson 2: Using paket for Dependency Management
- Lesson 3: Publishing an F# Library as a NuGet Package
Chapter 7: Networking and Socket Programming
- Lesson 1: Introduction to Networking in F#
- Lesson 2: Making HTTP Requests with HttpClient
- Lesson 3: TCP Client-Server Communication
- Lesson 4: Using WebSockets in F#
- Lesson 5: Working with REST APIs
Chapter 8: Cryptography and Security
- Lesson 1: Introduction to Cryptography
- Lesson 2: Hashing and Message Digests
- Lesson 3: Symmetric and Asymmetric Encryption
- Lesson 4: Digital Signatures and Certificates
- Lesson 5: Secure Communication in F#
Chapter 9: F# 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
- Lesson 5: Memoization and Caching in Functional Programming
Chapter 10: Signal Handling and Preprocessor
- Lesson 1: Introduction to Signal Handling in F#
- Lesson 2: Using Preprocessor Directives (#if, #endif, #load)
- Lesson 3: Debugging and Conditional Compilation