This is intended to be an intermediate course in the development of necessary tools for scientific problem solving. The focus will be on learning data structures and algorithms through the code development process. The course would emphasize on the self-learning aspect (need based learning, on demand learning), with reference to new programming paradigms and emerging coding practices from the Engineering industry.