Lectures given at the Master in Software Engineering, Padova: