This document discusses scoping in programming languages. It defines scoping as the visibility of variables within a program. There are two main types of scoping: static scoping and dynamic scoping. Static scoping determines visibility at compile time based on the block structure, while dynamic scoping determines it at runtime based on the call stack. Examples are provided to demonstrate the differences between static and dynamic scoping by showing the output for different variable references under each scoping rule.