Symbolic Execution and Quantitative Reasoning: Applications to Software Safety and Security (Synthesis Lectures on Software Engineering)