This document provides an overview of theories and approaches to code-switching. It discusses the sociolinguistic approach, which views code-switching as a social practice used to perform certain functions. Specifically, it examines Gumperz's theory that code-switching can be situational, dictated by factors like setting and topic, or metaphorical, used to convey symbolic meaning. It also discusses Myers-Scotton's markedness model and rational choice model, which analyze when code-switching follows or violates social norms, and see code-switchers as rational agents who switch codes for communicative benefits. The document aims to explain and analyze various theories of code-switching and categorize them according to their approaches.