Provides the fundamentals of computer science with an emphasis on applying programming skills to solve problems and increase human efficiency. Topics include variables, data types, expressions, control flow, functions, input/output, data storage, networking, security, selection, sorting, iteration and the use of aggregate data structures such as lists and more general collections. Students will explore the structure and design of larger programs, emphasizing design decisions that affect the efficiency, expandability, and maintainability of code while analyzing the differences among a variety of approaches. Additional topics include the use of libraries for data visualization, recursion, asymptotic analysis, databases, testing, and multi-language integration. No previous programming experience required.