This report introduces a simplified overview of program slicing, a technique brought up by Mark Weiser[1] to aid developer in program comprehension by reducing the complexity of the program with respect to the selected aspects of semantics. We first talk about the most common forms of slicing techniques from syntactic and semantic perspectives. Next, we briefly introduce their simplification power in various applications, and some well-known slicing tools on the web.