Skip to main content Link Search Menu Expand Document (external link)

Principles of Software Engineering

CSE 210 is a first course in software engineering. Relative to some other CSE courses, it is unusual:

  • The course emphasizes group work: half your grade will come from your contribution to your group, rather than individual work. You may do different work from other people in the class, and that’s okay! The goal is for you to serve your group as effectively as possible.

  • The group work will be not be graded primarily on the basis of your technical accomplishments (although that will be a factor). Instead, the emphasis will be on using the techniques presented in class to further the creation of software that benefits users.

  • In some classes, spending large amounts of extra time can benefit projects. However, software engineering is about predictability. A software team that works 12-hour days for a period of time can ship great software once — and then disband due to burnout, never to ship software again. We will ask you to budget and report on your group work time. More is not necessarily better. Of course, less is not better either!

Some students may have significant prior experience in software engineering. If this is the case for you, I invite you to both leverage your past experience and use the class as an opportunity to try out new methods.

This is my first time teaching this course, and I have made significant changes compared to other versions of the course. I ask for your patience and flexibility as I adapt the course design during the quarter. I reserve the right to make changes — both to content and to grading policy — to make the course work best for everyone. I encourage you to give feedback to me or the TAs throughout the quarter so we can make the course a great learning environment for everyone.

Learning objectives

Upon completion of this course, students will be able to:

  1. Work effectively in a team that uses an Agile development process.
  2. Design and document software systems according to stakeholder needs.
  3. Implement and debug complex software systems.