Chapter 1: Introduction to Fortran
- Lesson 1: What is Fortran?
- Lesson 2: History and Evolution of Fortran
- Lesson 3: Applications of Fortran in Scientific Computing
- Lesson 4: Setting Up the Fortran Environment (gfortran, Intel Fortran, etc.)
- Lesson 5: Writing and Running Your First Fortran Program
- Lesson 6: Fortran Compilation and Execution
Chapter 2: Variables, Data Types, and Constants
- Lesson 1: Declaring and Initializing Variables
- Lesson 2: Data Types: Integer, Real, Complex, Logical, Character
- Lesson 3: Implicit and Explicit Typing (IMPLICIT NONE)
- Lesson 4: Constants and Named Constants (PARAMETER)
- Lesson 5: Type Conversion and Casting
Chapter 3: Operators in Fortran
- Lesson 1: Arithmetic Operators
- Lesson 2: Relational and Logical Operators
- Lesson 3: Bitwise Operators
- Lesson 4: Assignment and Compound Assignment Operators
Chapter 4: Control Structures
- Lesson 1: Conditional Statements: IF, IF-ELSE, IF-ELSEIF-ELSE
- Lesson 2: SELECT CASE Statement
- Lesson 3: Loops: DO, DO WHILE, EXIT, CYCLE
- Lesson 4: GOTO Statements and Labels (Legacy Code)
Chapter 5: Functions and Subroutines
- Lesson 1: Subprograms: Functions vs. Subroutines
- Lesson 2: Function Declaration and Invocation
- Lesson 3: Passing Arguments (By Value, By Reference)
- Lesson 4: Recursive Functions
- Lesson 5: Internal and Module Procedures
Chapter 6: Arrays and Data Structures
- Lesson 1: Declaring and Using Arrays
- Lesson 2: Multidimensional Arrays
- Lesson 3: Array Slicing and Array Operations
- Lesson 4: Dynamic Memory Allocation (ALLOCATE and DEALLOCATE)
- Lesson 5: Fortran Derived Data Types
Chapter 7: Strings and Character Handling
- Lesson 1: String Declaration and Initialization
- Lesson 2: String Concatenation and Manipulation
- Lesson 3: String Comparison
- Lesson 4: Fortran LEN() and TRIM() Functions
Chapter 8: Fortran I/O Operations
- Lesson 1: Standard Input and Output (READ, WRITE, PRINT)
- Lesson 2: File Handling in Fortran (OPEN, CLOSE, INQUIRE)
- Lesson 3: Formatted and Unformatted I/O
- Lesson 4: Direct Access File Handling
Chapter 9: Modules and Namespaces
- Lesson 1: Introduction to Fortran Modules
- Lesson 2: Creating and Using Modules
- Lesson 3: Importing Modules (USE statement)
- Lesson 4: Separate Compilation and Linking
Chapter 10: Object-Oriented Programming in Fortran
- Lesson 1: Introduction to OOP in Fortran
- Lesson 2: Defining and Using Derived Types
- Lesson 3: Encapsulation with Modules
- Lesson 4: Operator Overloading
- Lesson 5: Polymorphism and Abstract Interfaces
Chapter 1: Memory Management and Pointers
- Lesson 1: Introduction to Pointers in Fortran
- Lesson 2: Pointer Arithmetic and Pointer Arrays
- Lesson 3: Pointer Association (NULLIFY)
Chapter 2: Parallel Programming in Fortran
- Lesson 1: Introduction to Parallel Computing in Fortran
- Lesson 2: Coarrays in Fortran (COARRAY)
- Lesson 3: OpenMP for Multithreading
- Lesson 4: MPI for Distributed Computing
Chapter 3: Numerical and Scientific Computing
- Lesson 1: Floating-Point Precision and Error Handling
- Lesson 2: Matrix Operations in Fortran
- Lesson 3: Linear Algebra Libraries (BLAS, LAPACK)
- Lesson 4: Solving Differential Equations in Fortran
Chapter 4: Special Libraries for Scientific Computing
- Lesson 1: Using LAPACK for Linear Algebra
- Lesson 2: Using BLAS for Performance Optimization
- Lesson 3: FFTW for Fast Fourier Transforms
- Lesson 4: Scientific Visualization with Fortran
Chapter 5: Fortran for Computational Fluid Dynamics (CFD)
- Lesson 1: Introduction to CFD in Fortran
- Lesson 2: Solving Partial Differential Equations (PDEs)
- Lesson 3: Finite Difference and Finite Element Methods
Chapter 6: High-Performance Fortran (HPF)
- Lesson 1: Introduction to High-Performance Fortran
- Lesson 2: Data Parallelism and Distributed Memory Computing
Chapter 7: Signal Handling in Fortran
- Lesson 1: Handling System Signals
- Lesson 2: Implementing Error Handling with Signals
Chapter 8: Preprocessor and Macros
- Lesson 1: Introduction to Fortran Preprocessor (cpp, fpp)
- Lesson 2: Conditional Compilation (#ifdef, #define)
- Lesson 3: Macros and Code Optimization
Chapter 9: Networking and Socket Programming in Fortran
- Lesson 1: Introduction to Network Programming
- Lesson 2: Socket Communication in Fortran
- Lesson 3: Implementing TCP/IP Clients and Servers
Chapter 10: File I/O and Data Serialization
- Lesson 1: Binary and ASCII File Handling
- Lesson 2: Reading/Writing Data in CSV and JSON Formats
Chapter 11: Creating and Using Fortran Libraries
- Lesson 1: Building a Static Library in Fortran
- Lesson 2: Building a Dynamic Library in Fortran
- Lesson 3: Linking Fortran Libraries in Other Languages
Chapter 12: Debugging and Profiling Fortran Code
- Lesson 1: Debugging Fortran Programs (gdb, valgrind)
- Lesson 2: Profiling Fortran Code for Performance Optimization
Chapter 13: Design Patterns in Fortran
- 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 14: Cryptography and Security in Fortran
- Lesson 1: Introduction to Cryptography in Fortran
- Lesson 2: Implementing Symmetric and Asymmetric Encryption
Chapter 15: Working with Modern Fortran Features
- Lesson 1: Fortran 2008, 2018, and 2023 New Features
- Lesson 2: Improved Error Handling and Performance Optimizations
Chapter 16: Bonus | Real-World Applications of Fortran
- Lesson 1: Building a Simple Weather Prediction Model
- Lesson 2: Implementing a Scientific Simulation