Societies of Computation (SoC) is proposed as a frame work for design of real world complex systems involving computing and communication. The computational paradigm behind SoC is communities of rational agents. The framework has three components; Foundational research, Generic technologies and Applications.