An introductory course in computer programming as a foundation for more advanced programming, computer science, computer networking, or software engineering courses. Emphasis is on the development of problem solving skills as it introduces students to computer programming principles and best practices using modular and Object Oriented programming concepts. Attention is given to development of effective software engineering practices emphasizing such principles as analysis and design decomposition, encapsulation, procedural abstraction, testing and software reuse. Students learn and apply standard programming constructs, problem-solving strategies, the concept of an algorithm, fundamental data structures, and the machine representation of data. (CSU/UC)