Introductory Courses at UW CSE

Computer science and engineering increasingly shapes the way we live and interact with the world around us. Computing has transformed nearly every industry, from law and government, to education and health care, to travel and entertainment. It also has become an essential tool for researchers in every scientific and business discipline, as we have entered an age of data-driven discovery.

UW CSE serves as an entry point for students across the campus to explore the world of computing. We offer courses designed to enable all students, regardless of major, to develop computational thinking and hands-on programming skills. Some students discover after taking one of our classes that CSE is the right path for them. Others apply their new knowledge and skills to a field outside of CSE. No matter what path you choose, taking a CSE course—or courses!—can enrich your educational experience and enhance your career prospects.

UW President Ana Mari Cauce and students participate in the Hour of Code
UW President Ana Mari Cauce does the Hour of Code

 

Computer Programming I (CSE 142)

What is it?

CSE 142 is an entry-level course that introduces students to essential computing concepts and teaches them how to write programs in Java—the most widely-used programming language in the world and an integral part of the UW CSE curriculum. CSE 142 is designed for students with no programming experience. Students attend a combination of large lectures and small (< 25 students) weekly recitation sections led by a community of TAs who foster a supportive and inclusive learning environment for beginning programmers. Students also have access to the Introductory Programming Lab for individualized help.

UW CSE offers honors sections connected to CSE 142 and 143 in which students take part in readings and discussions exploring a variety of computer science topics, including the nature of computation, the mathematical underpinnings of computer science, social issues related to computing, and current trends in the field. Participating students earn one additional credit for the seminar; in addition, the Honors Program grants students who complete CSE 142 or 143 in conjunction with the seminar credit for one 5-unit math or science course in the core.

Enrollment in CSE 142 has increased dramatically, and the course has been particularly successful at engaging more women in computer science and engineering. CSE 190A, a seminar linked to a section of CSE 142, enables students to explore the role of women in the field through group discussions, hands-on activities, and guest speakers. Watch our video exploring the growing popularity of CSE 142 and its follow-on course, CSE 143, and how these courses contribute to greater diversity in computing.

Who should take it?

Group photo of undergraduate TAs
Our TAs enjoy introducing students to programming

Any student who is new to programming, and is interested in learning Java and general programming skills while working on entertaining assignments, would benefit from taking CSE 142.

Generally speaking, students who plan to major in computer science or computer engineering should complete CSE 142 and CSE 143 (or CSE 143X), as they are prerequisites for admission. Students may also need to complete CSE 142 and/or CSE 143 to satisfy requirements for majors from other departments.

Capacity

CSE 142 is offered every quarter, including summer. More than 3,000 students take the course each year.

What next?

Students have a number of options for further study. CSE 143 is the continuation course for those who want to develop more advanced programming skills in Java. Students may also take CSE 160 after CSE 142 to learn how to write programs for data analysis and visualization in Python (CSE 160 is not open to students who have completed the second Java course, CSE 143). UW CSE’s web programming course, CSE 154, is open to students who have achieved a grade of at least 2.0 in this course.

 

Computer Programming II (CSE 143)

What is it?

CSE 143 builds on the material in CSE 142 to develop more advanced programming skills, essential for writing more complex programs over larger and more interesting data. The format is similar to CSE 142, with two small weekly recitation sections.

UW CSE offers honors sections connected to CSE 142 and 143 in which students take part in readings and discussions exploring a variety of computer science topics, including the nature of computation, the mathematical underpinnings of computer science, social issues related to computing, and current trends in the field. Participating students earn one additional credit for the seminar; in addition, the Honors Program grants students who complete CSE 142 or 143 in conjunction with the seminar credit for one 5-unit math or science course in the core.

Who should take it?

CSE 143 is designed as the follow-on course to CSE 142. While students who already know the material covered in CSE 142 are allowed to take CSE 143 without formal approval, doing so is generally not advised: because the two courses are designed together, CSE 143 assumes completion of CSE 142. CSE 143 is a great choice for any student wanting to learn more after CSE 142, and it is generally required for entry to the CS or CE major. CSE 143 also may be required for other majors on campus.

Capacity

CSE 143 is offered every quarter, including summer. Approximately 2,000 students take it each year.

What next?

After CSE 143, students can take various upper-division computing courses. A good next step for students who enjoyed CSE 143 would be CSE 373 Data Structures, a more advanced course designed for non-majors. Other 100-level courses, such as CSE 154 Web Programming, are also options (the exception is CSE 160, which cannot be taken after CSE 143). Completion of CSE 143 satisfies the prerequisites for students to apply for admission to the CS or CE major.

 

Accelerated Computer Programming I/II (CSE 143X)

What is it?

CSE 143X is an accelerated version of CSE 142 and CSE 143 that covers the material of both in a single quarter. This course doubles the pace of learning—not the assignment workload.

Who should take it?

CSE 143X is designed for students who want to take CSE 142 and CSE 143 but feel they have sufficient experience and ability to learn the material in a condensed time frame.

Capacity

CSE 143X is usually offered once per year to about 100 students.

What next?

Students who complete CSE 143X have the same options for further study as students who have completed CSE 143.

 

Krittika D'Silva tests a new smartphone app in India
Krittika D'Silva tests a new smartphone app in India

Data Programming (CSE 160)

What is it?

CSE 160 teaches students to program for data analysis and visualization using Python, the standard programming language used in various scientific disciplines and in other data-driven fields. Students perform real data manipulation tasks and write programs that solve problems using actual data sets drawn from the sciences, engineering, business and the humanities.

Upon completion of CSE 160, students are prepared to take what they learned in the classroom and apply it in their chosen field. As practice for this, the course culminates in a final project in which students choose and solve their own data analysis problem, working individually or in pairs.

Who should take it?

CSE 160 offers a firm grounding in computer programming to any student, and no previous programming experience is assumed. Although it is aimed at those who are new to programming, students who have taken CSE 142 (but not CSE 143) are welcome to enroll in this course.

CSE 160 is particularly beneficial to students who wish to perform data analysis and visualization. Students who are majoring in or intend to major in one of the natural, physical or social sciences, or another data-intensive discipline, are encouraged to incorporate this course early in their studies. See this article on how student Krittika D’Silva applied her programming skills to addressing real-world problems in health care for an example of how CSE 160 is useful in a variety of fields.

Capacity

CSE 160 is usually offered once per year to 100-150 students.

What next?

After completing CSE 160, students are ready to apply data analysis independently without the need for further coursework. Students who are interested in taking additional programming classes or who intend to major in computer science or computer engineering may enroll in CSE 142 or they may opt for CSE 143X, which combines material from both CSE 142 and CSE 143 into one accelerated course. These courses are based on the Java programming language. Students who would like to learn how to build websites and web-based applications and have achieved a grade of at least 2.0 in CSE 160 can enroll in CSE 154 Web Programming.

 

Computer Science Principles (CSE 120)

What is it?

CSE 120 introduces students to the fundamental principles of computer science and to basic programming concepts as a means to develop their computational thinking. Students explore the creative aspects of computing, including abstraction, problem-solving and managing complexity, and have the opportunity to consider the social, ethical and legal ramifications of various computing technologies. CSE 120 is related to the Advance Placement course in Computer Science Principles launching in fall 2016.

Who should take it?

Every student, no matter what his/her chosen field, should be familiar with the concepts and technologies that underpin computing and its role in our society. Anyone who seeks to acquire a basic understanding of computer science and to gain insights beyond what they know as mere consumers of technology would benefit from taking this course.

Capacity

CSE 120 is offered once per year to about 75 students.

What next?

Students have multiple options for building on what they learn in CSE 120. A natural next step may be to follow principle with practice by enrolling in one of our introductory programming courses, CSE 142 or CSE 160. While CSE 120 offers a great introduction to computer science concepts, it is not a necessary prerequisite for enrollment in those programming courses.

 

Web Programming (CSE 154)

What is it?

CSE 154 provides an introduction to programming languages and tools for creating websites and web-based applications—skills that are increasingly useful in a variety of fields, as people conduct more of their professional and personal lives online. Students learn how to author web page content using Hypertext Markup Language (HTML), control design and layout through the use of Cascading Style Sheets (CSS), and create interactive web pages with JavaScript. Students also learn how to use Structured Query Language (SQL) to build web pages that interact with databases and additional tools for creating enhanced online experiences.

Students must have achieved a grade of at least 2.0 in CSE 142, CSE 143, or CSE 160 to enroll in this course.

Capacity

CSE 154 is offered once or twice each year, with 200-350 students per offering.

 

Science and Art of Digital Photography (CSE 131)

Examples of student work from CSE 131
Student projects from CSE 131

What is it?

CSE 131 offers students the opportunity to express their creativity while exploring the technical aspects of digital photography, including photographic composition, the science of optics and digital imaging, and the future of internet-enabled photography. Students practice using a variety of software tools and techniques for incorporating design elements such as line, color, texture and light, culminating in a final project organized around a theme. View examples of past student projects curated by course instructors here and here.

Capacity

CSE 131 is offered once per year with room for approximately 200 students.

 

Upper-Level Courses

In addition to our 100-level courses, we offer a selection of 300- and 400-level courses in which students can explore in some depth specific areas of computing in a format suited to non-majors. Topics include algorithms, intermediate programming, artificial intelligence and database systems. See our overview of UW CSE's non-major courses to learn about options for additional study.

Questions? Consider speaking to a UW CSE adviser. Visit our undergraduate advising page for more information.