“Symbolic Execution” is a powerful approach for finding bugs in programs that is aimed at validating a program via good test cases. Symbolic execution explores multiple paths that a program could take under different inputs in an attempt to identify executions that fail. The key idea in symbolic execution is to allow a program to take on symbolic - rather than concrete - input values which, guided by a constraint solver, allows the program to explore the space of inputs. In this talk, we will discuss the following: * What is symbolic execution? * Why is symbolic execution better than manual and random testing? * Engineering techniques that scale symbolic execution to real world software. * Different tools that use symbolic execution and their comparison.