UW offers many excellent introductory programming classes. These options include the new CSE 121, CSE 122, CSE 123 sequence, the older CSE 142 & CSE 143 sequence, as well as CSE 160 and CSE 163. Different classes are best for different people — no one class is better than the others. To learn more about these courses you should visit this page for a much more in depth description of introductory courses offered in CSE.
Some departments/classes have AMath 301 or CSE 142 as requirements/electives/prerequisites. Many departments and instructors are accommodating about permitting an exception to these requirements if you have taken CSE 160, but of course you will have to explicitly request such permission. If the prerequisite exists because of specific skills, such as a need for knowledge of Java, MATLAB, or differential equations, then CSE 160 cannot substitute. If the prerequisite exists because students should have a general knowledge of computational thinking and programming, then the substitution makes sense. Note that some departments may not yet be aware of the new course number for CSE 160 Data Programming, which was previously numbered CSE 140. CSE 160 is the same as the old CSE 140, only the course number changed.
What programming class should you take after CSE 160? You don't have to take any more programming classes. After CSE 160, you will have the ability to write small programs to solve real-world data analysis and transformation problems. You will also know enough to use resources such as books and websites to learn more. But, you may find that you enjoy programming so much that you want to progress to the next level. Or, you may want to solve larger and more challenging problems. For more information on other CSE courses including CSE 163, CSE 154 and the new CSE 121, 122, 123 sequence starting in Autumn 2022 please look here.
The best way to learn to program is to do it! When you encounter a task that could be done via programming, do it that way even if that takes you a little while longer. You will get better the more practice you get. Try to get feedback on your programming — either from thoughtful introspection or from a more expert programmer — since that is the best way to improve.
Books are useful, but only if you then put the ideas into practice. That said, you should return to the resources listed on the syllabus, reading the parts that weren't assigned (or that you didn't read) during the quarter. Some other books you might find useful are Learn Python The Hard Way (which should really be titled, "Learn Python by programming in it"), and Practical Programming: An Introduction to Computer Science Using Python.
In addition to the UW Professional and Continuing Education courses listed above, there are online courses available from a variety of sources. Below are listed a few related to either Python or data programming that may be of interest. Some of these have fees but many of them have their videos and assignments available for free if you are not interested in receiving a certification. Usually you still have to sign up (even when it is free) in order to view the videos etc. Sometimes you can't tell if there is a free option until you try to sign up. So try it!