Designing safe and attack resilient software with the help of artificial intelligence and machine learning. This includes modeling the real world systems as an adversarial game, and using multi-agent reinforcement learning for solving the proposed game.