Introduction to the basic principles of software development using a modern high-level language, including using selection, looping, function calls, and recursion, along with simple data structures such as arrays and objects, to solve problems. Includes an introduction to software engineering techniques such as interactive debugging, software testing, and methods of software validation. Includes a two-hour lab. Prerequisite: CS 1107 and CS 1108, or CS 1309; MATH 1170 or MATH 1470 or higher.