Which programming class should I take?
UW offers many excellent introductory programming classes. These options
include CSE 142, CSE 143, CSE 143X, CSE 190P, and AMath 301.
This webpage will help you decide among them.
-
Have you ever taken a college or AP programming class?
- If you already know some Java programming: CSE 143
- If you already know some programming, but not in Java: CSE 143X
If you don't know programming, proceed to the next question.
-
What programming language do you want to learn?
- If you want to learn Java, which is the #1 programming language in the
world and is used throughout the CSE curriculum: CSE 142
- If you want to learn Python, which is a fun, easy-to-use language
that is just as powerful as Java: CSE 190P
- If you want to learn MATLAB for solving differential equations:
AMath 301
If you don't care, proceed to the next question.
-
What style of problem motivates you?
- If you are more motivated by puzzles and games: CSE 142
- If you are more motivated by problems drawn from engineering,
the physical sciences, and the social sciences: CSE 190P
- If you want to solve differential equations: AMath 301
If you don't care, proceed to the next question.
-
What are your schedule constraints?
- CSE 142 is taught every quarter at multiple times, so it offers more
scheduling flexibility.
- CSE 190P is taught less frequently.
-
If you got to here, take CSE 142, which is your default choice. It is a
highly-rated and well-established class.
Substituting CSE 190p 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 190p, 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 190p cannot substitute. If the
prerequisite exists because students should have a general knowledge of
computational thinking and programming, then the substitution often makes
sense.
What programming class should you take after CSE 190P? You don't
have to take any more programming classes. After CSE 190P, 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 that you want to be able to solve larger and more challenging problems.
Here are some options:
-
CSE 143X is the best follow-on class to CSE 190P. It covers the
material of CSE 142 and CSE 143 in a single quarter. Students are
assumed to be familiar with programming concepts, though not
necessarily with Java. It is currently offered in the autumn quarter.
-
CSE 143 is the next-best choice, for ambitious students. CSE 143
assumes knowledge of CSE 142 (in particular, familiarity with Java),
but it has no official prerequisites — any student can take it
without having taken CSE 142. A student who did well in CSE 190P and
is willing to spend extra effort at the beginning of the quarter to
come up to speed on Java could take this class.
-
CSE 142 is a choice for a student who struggled in CSE 190P. CSE 142
is an introduction to programming concepts and the Java language,
assuming no programming background. The conceptual material is similar
(but not identical) to CSE 190P, though the presentation and the
application domain is different. Because of the overlap in topics, a
good student should not take both: the student may be bored, and
taking some different class that teaches new material would be a better
use of time. A student who struggled in CSE 190P may may find CSE 142
useful (and vice versa!) in reinforcing the concepts, because they are
explained differently and applied in different contexts.