Syllabus

Goals

The aim of this course is to help students write programs of higher quality and increased complexity. This requires creating software that is (1) correct, (2) easy to change, (3) easy to understand, and (4) easy to scale. We will study principled approaches to achieving these four goals.

After completing this course successfully students should be able to:

In this class, we will use Java and associated tools like IntelliJ, JUnit, JavaDoc, git, and JavaScript/React, but the goal is to understand the underlying ideas and concepts that are generally applicable to software construction.

Approximate Topics

We expect to cover the following, with an emphasis on specification and design:

Prerequisites

The only formal prerequisite is CSE 143. We will very much rely on a thorough understanding of the concepts from CSE 143 as well as Java programming skills. We will go much further and you will be challenged to approach software development much differently than you have in CSE 143 or other courses.

Texts

The required books for the course are the following:

There will be assigned readings from these book during the quarter, and you may be required to complete short online quizzes about the material.

These books are freely available online to UW students. Go to https://www.oreilly.com/ and click "sign in" at the upper-right corner. In the page that appears, enter your netid@uw.edu UW email address in the email address box, then click sign-in (no password needed yet). Click the single-sign-on button that appears and you will be taken to a regular UW netid login page for verification. After that you can read any of the hundreds of technical books and other items on the site.

Besides the required text, the following books may be helpful to you, and are also available online:

Course Organization

Lectures

This quarter, lectures will be presented live at the times given in the UW course schedule. They will be recorded and available sometime later in the day after class. See the separate web page on zoom lectures for more details about how lectures will be organized and run. Links to the lecture and section zoom meetings are on the Canvas zoom page and calendar for the course.

Sections

Each week includes a TA-led quiz section, typically focused on preparation for the next homework assignment. These will not be recorded, but the printed material covered will be posted on the course calendars. We will make recordings of tutorial presentations or demos available when needed.

Homework

Homework will consist of 10 assignments, typically with one due each week. There are two exceptions to this: one assignment is split over two weeks and one week has two assignments (with one of the assignments being quite short).

Quizzes

The course will include about a half-dozen timed quizzes, taken online during the quarter. These are likely to consist primarily of multiple choice questions.

Exams

There will be no regular exams this quarter. In addition to quizzes, the final homework assignment will be extended with an additional portion where students demo their assignment to a TA and discuss their work.

Communications

Discussion board

The ed discussion board will be a primary way for all of us to contact each other. Please use this to post and answer questions, trade ideas, help each other out, and stay in touch outside of class. You can post anonymously if you wish. The course staff will also use this message board to post announcements of general general interest as well as corrections or clarifications to assignments.

If you want to ask a question about particular things in your assignments or code that are not appropriate for public posting (detailed code or solutions, for example), you can post a private message on the discussion board and course staff will do our best to help you out. If the question is a general one without specific details, we might ask permission to re-post it anonymously to help out others who run across similar issues.

Staff email

If you need to get in touch with course staff about personal issues or questions about grading or similar things, we ask that you send email to cse331-staff[at]cs and not use the discussion board. That allows us to keep track of your message and be sure that it gets handled properly by the person on the course staff best able to take care of it.

We ask that you try to minimize individual email messages to course staff members unless a private message really is appropriate or necessary. We will do our best to help out in these cases.

Policies

Inclusiveness

You should expect and demand to be treated with respect by your classmates and the course staff. You belong here, and we are here to help you learn and enjoy a challenging course. If any incident occurs that challenges this commitment to a supportive and inclusive environment, please let the instructor know so the issue can be addressed.

Grading

Your overall grade will be determined roughly as follows (subject to change):

85% Homework assignments
15% Quizzes

Homework assignments are not weighted equally because they are of different length and sophistication. Later assignments are likely to be weighted more heavily because they are more involved. (The exact weighting will be determined later on.)

Students are expected to complete all homework assignments. Students who receive no (or essentially no) credit for an assignment risk failing. Outside of those circumstances, failing the course is highly unusual.

Grades of “incomplete” are reserved for situations covered by the UW policy.

We will not have ordinary midterm and final exams this quarter because of the remote learning situation.

Late Policy

This policy may not be the same as in your other classes. You are responsible for understanding it fully.

In general, late work needs to be authorized in advance, by the instructor, at least 30 hours before the due date, in order to be accepted. Such authorization will normally only be given for unusual reasons that are beyond the student's control. However, we will make exceptions to the advanced authorization requirement for unexpected extenuating circumstances (e.g., serious illness).

Aside from the circumstances just mentioned, late work will be accepted without penalty provided that the following conditions are met:

In addition, note that:

Beyond the permitted late days, late work is not accepted unless it was pre-authorized (30 hours in advance) or there are extenuating circumstances acknowledged by the instructor.

Re-submission

For coding assignments, only, we will allow you to re-submit your work. However, we will only change the correctness portion of your score, not style, design, etc. Furthermore, the maximum you can receive on a resubmit is 80%.

The purpose of this policy is to allow students who make minor mistakes that end up causing a large number of our correctness tests to fail to fix those mistakes and limit the point deduction to just 20% of correctness points if all errors are fixed.

Academic Integrity

Any attempt to misrepresent the work you submit will be dealt with via the appropriate University mechanisms, and your instructor will make every attempt to ensure the harshest allowable penalty. The guidelines for this course and more information about academic integrity are in a separate document. You are responsible for knowing the information in that document.

Accommodations

Please refer to university policies regarding disability accommodations or religious accommodations.

Advice