CSE 331

The aim of this course is to help you write programs of higher quality and increased complexity. This requires creating software that is correct, easy to change, easy to understand, and easy to scale. The course covers principled approaches to achieving each of these.

This is the main website for CSE 331. Please use the navigation bar at the top of this page to find important resources and links on this site. Some additional resources, particularly links to zoom lectures, sections, quizzes, and office hours, are on the course Canvas web page.



Instructor: Hal Perkins (perkins at cs)

TAs: Hritik Aggarwal, Samuel Berensohn, Ramya Challa, Andrew Gies, Elijah Greisz, Kellie Gui, Bryan Lim, CJ Lin, Ardi Madadi, Kaushal Mangipudi, Gavin Parpart, Helena Stafford, Yihang Wu, David Xu, Yifan Xu, and Hoaran Yu

Contact Info: Please use the message board whenever possible. The answer to your question is likely to be helpful to others in the class, and by using the discussion board, the information will be available to them as well. For grading or other private matters, you will get the fastest response by sending email to cse331-staff at cs, which will reach both the instructor and all TAs.


All course activities will take place online via zoom.

Lectures: Lectures will be live during regularly scheduled class times. Lectures will be recorded and recordings should be available by the end of the day. Slides will be posted in advance, usually the night before class (see the course calendars for links). You can "attend" either lecture regardless of your official registration; we will try to keep the two lectures in sync so the particular lecture chosen shouldn't make a significant difference.

Sections: Meeting via Zoom video on Thursdays. Times and links to the Zoom meetings will be available on our Canvas page.

Office Hours: Meeting via video at various times throughout the week. Times and links to the Zoom meetings will be available on our Canvas page.

If you are new to Zoom, please see the Zoom information page. Even if you have been using zoom for a while (or especially if you have), you should open your zoom app, check for updates, and apply any new ones you don't have installed already. For more details about how lectures will be conducted, please see zoom lecture information.