Computational Approaches For Engineering Effective Teams