This course aims to equip the students with knowledge and skills necessary to build robust programs which includes defensive programming techniques (error handling, exceptions, assertions, debugging aids), current programming trends (functional and/or scripting), code testing, and tuning strategies and techniques. In addition to Problem solving techniques. Object Oriented Programming concepts using C++, Java, or Python.