Which programming class should I take?

UW offers many excellent introductory programming classes. These options include CSE 142, CSE 143, CSE 143X, CSE 160, and AMath 301. Different classes are best for different people — no one class is better than the others. This webpage will help you decide among them.

  1. Do you already know how to program?
    If you are confident in your ability to write small programs, you would be bored or would waste your time in CSE 160. CSE 160 is intended for beginners.
  2. What programming language do you want to learn? If you don't care, proceed to the next question.
  3. What style of problem motivates you? If you don't care, proceed to the next question.
  4. What are your schedule constraints?

Frequently Asked Questions about CSE 160

Substituting CSE 160 for other classes

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 I take after CSE 160?

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. Here are some options:


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 (for Python 2 or Python 3).

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!