Introduction to methods of problem solving and algorithm development. A high-level programming language is taught with an emphasis on program design, coding, debugging, testing, and documentation. Discussion of ethical, social, and legal issues related to computing.