Type Systems and Static Program Analysis