Simulating Interacting Agents and Social Phenomena