This course covers the concepts and methodologies required for software testing and deployment. Topics include unit testing, module testing, subsystem and system level testing, coverage criteria, and manual and automated techniques for test validation and data generation. Formal testing processes and standards, black box vs. white box testing, functional testing, and testability analysis are also covered. Students will also learn to use profilers, practice advanced features of popular debugging tools, learn to use version control software such as SVN and GIT, and build tools like Ant, Maven and Gradle. (3)