This course is for students who are interested in learning how to solve problems using computer programming. No programming experience is required or assumed. Students will learn how to use algorithmic problem solving in a variety of coding styles, using a modern object-oriented language. The focus is on building skills that students can transfer to other settings, including data science and scientific computing.