CSE 331: Syllabus

Students are expected to be familiar with all the information below. Read it fully and carefully.

Overview

Prerequisites

The course assumes knowledge of the Java programming language at the level covered in CSE 123; however, students will not program in Java in this course. Instead, Java mainly will be used as a point of comparison for the languages that are used.

Topics

The course content will focus on techniques used by professional programmers to ensure that the programs they produce are, first and foremost, correct, as well as easy to understand, easy to change, and modular.

Correctness is achieved by writing careful specifications and then using tools, testing, and reasoning to detect bugs. Of these three, reasoning is the most important for detecting bugs. It is also a skill (1) that best separates professional from amateur programmers and (2) that is most difficult for AI automate.

We will practice the techniques discussed above within the context of full-stack web applications. This is a good setting as the complexity of client-server interaction helps us to appreciate the difficulty of finding bugs (via debugging) when they are not caught by the techniques mentioned above. This difficulty only increases as programs get larger and more realistic, making it all the more important to detect and remove bugs when first writing the code. (Debugging and then reasoning carefully through the code is more work than just reasoning up front.)

Goals

The goals of this course are to teach students to:

  • Reason accurately so that the code they write is likely to work correctly the first time it is run.
  • Follow the accepted software engineering practices of reasoning, testing, and using the type system so that any reasoning mistakes are likely caught before a user sees them.
  • Practice defensive programming so that they will likely catch any errors that make it past reasoning, testing, and the type system.
  • Understand the structure of larger-scale (client-server) programs so that they can effectively debug the failures that do make it past those steps.
  • Structure their programs so that they are easy to understand, easy to change, and modular.

Textbook

There is no required textbook for the course. However, students may find the articles linked on the Resources page useful to read at some point during the course.

Course Activities

Attendance

Success in the course is anecdotally correlated with in person lecture and section attendance. If you want to do well in the course, we strongly encourage you to attend both in person.

We understand that students sometimes have scheduling conflicts during summer quarter (jobs, internships, travel, etc.), so if you expect to be taking some or all of the class remotely, we ask that you reach out to the instructor as soon as you are aware of these conflicts.

Similarly, if you experience sickness or a personal or family emergency, we ask that you reach out to the instructor as soon as you are aware (even if you are not yet sure if they will impact your course participation).

While we will not monitor attendance, we do want each student to have their best chance of success in the course, and understanding your circumstances early will give the staff the best chance of supporting you.

Lectures

Lectures will be given in person, at the locations and times shown on the time schedule and on the home page. Details and materials for each lecture will be posted on the Topics page.

Lecture Recordings

Lecture will be recorded for the benefit of students who are unable to attend and for review. Recordings are available through Panopto on Canvas.

Occasionally, technical difficulties disrupt the lecture recording process. If this does happen, we will do our best to upload a replacement recording within 24 hours following the original lecture time.

Sections

Each week includes a TA-led section. These consist of interactive practice exercises which are not conducive to being recorded, but the materials will be posted on the Topics page.

Sections are focused on preparation for the next homework assignment with practice problems similar to those appearing in the homework or on the exam. It is very important that students take the time to work through these problems before attempting the homework to ensure they understand how to solve them.

For this reason, section participation is required. TAs will record which students attend and participate in the section exercises in-person. Those who are unable to attend can complete the practice problems on their own and submit their solutions in Gradescope by 5pm on Thursday to get participation credit. (If a student is completely unavailable on the day of a quiz section, they can contact the instructor to make special arrangements.)

Assessments

Homework

We will have 8 homework assignments, each generally including written and coding portions focused on the content from the 2-3 lectures prior to the assignment's release.

Assignments will be released on Thursdays and are due the following Thursday at 11pm. We encourage students to have all or most of the assignment done the day before it is due to be able to better focus on the Thursday section content.

Some assignments in this course can be very time-consuming for students. We encourage students to start each assignment early because, depending on your background, and which topics "click" for you, it can be hard to predict how long each assignment will take.

Occasionally, we discover errors in an assignment after it is posted. We will maintain a log on the website with any changes made to the assignment. If (and only if) we believe there is potential for students to submit correct solutions to the earlier version, we will make an announcement on the discussion board about the change. We will not make an announcement if the original version is obviously nonsensical (most typos fall into this category).

Homework mechanics

Students are responsible for successfully turning in their assignments by the deadline, as well as reviewing their graded work and making sure they understand any deductions or feedback they received (including making regrade requests for any perceived grading mistakes).

Submission

All written and coding work will be turned in via Gradescope to the "HW# Written" and "HW# Code" assignments, respectively.

It is your responsibility to ensure that written work is submitted properly. This includes:

  • legible handwriting (dark enough to read, well-spaced, easily decipherable)
  • well-lit, focused, correctly oriented scans (if handwritten on paper)
  • correctly compiled LaTeX
  • accurately matched questions to submission pages

If you fail to do any of these things, you may receive a point deduction.

It is your responsibility to ensure that your coding work is submitted properly. This includes:

  • verifying that each file submitted is the intended version
  • all required files, and only the required files, are uploaded
  • staff is able to run and test your code without errors

The autograder, which runs when you submit on Gradescope, will verify these last two requirements, so you should wait until the autograder finishes running and check for error messages. Leave sufficient time before the deadline to fix any errors and resubmit.

You can resubmit as many times as you'd like before the deadline. We will always grade the most recent submission (unless you "Activate" a historical submission). If you are working close to the deadline, we encourage you to periodically submit your current work to make sure you have something turned in.

Regrades

If students suspect their work was mistakenly marked incorrect, or they would like more feedback clarifying any deductions, they are encouraged to make a regrade request in Gradescope. Regrades related to perceived grading mistakes have the following caveats:

  • We will only entertain regrade requests for one week after the grades are initially posted. Any later requests will be ignored.
  • Requests to change the amounts of points deducted for an error will be ignored. These amounts, provided they are applied consistently, are entirely at the discretion of the course staff.
  • Legalistic arguments about why incorrect solutions should be accepted under an alternative reading of the problem statement will be ignored. Incorrect answers will be marked as such as long as the staff believes the intention of the problem statement was clear.
  • If students wish to fix an inconsistency between the grading of two assignments with similar answers, both students must request a regrade, so the grade of either or both submissions can be updated.

Exams

The course will have an in-person final exam during the lecture time on the last day of the quarter (10:50-11:50am, August 22nd).

If you are in the Seattle area during this time, you must make every effort to attend in person, including resolving any other scheduling conflicts. If you have a conflict that you are not able to resolve, please contact the instructor as soon as possible. If you are sick on the day of the exam, please do not come, and please contact the instructor as soon as possible.

We will hold a makeup exam or find other alternatives for students that must miss the exam, but only if they are communicative about their circumstances in advance.

More details about exam content, practice materials, and logistics will be uploaded to the Resources page a few weeks in advance of the exam. In general, the best preparation is the section and homework materials.

Getting Help

We want you to succeed! Never hesitate to reach out if you are struggling with a topic, the course as a whole, or some other circumstance. For private matters, feel free to email the staff email list, or the instructor directly.

Students can ask questions at any time on the message board. During normal working hours, they should receive a response within a fairly short period of time. See the "Ed Guidelines" post on the message board for how to use it successfully.

Each member of the course staff will have at least one office hour every week, where students can get one-on-one help. See the home page for times and locations.

Please follow these guidelines to ensure that your office hours experience is successful.

  • Come prepared. As mentioned above, students are meant to complete the section problems before attempting the homework. If you are totally lost on how to start a problem, you should see if a section problem is similar before coming to office hours.
  • Respect the 331 staff. This includes being polite and respecting their time. Importantly, staff is not expected to stay beyond their scheduled office hour time. Please refrain from re-queuing in the last 15 minutes of the unless there are no other students queued.
  • Try to keep your questions brief and remember the goal for staff is to help you in the right direction which likely means giving suggestions for things to try next on your own. Do not expect staff to walk you through the whole problem or assignment.

Policies

Inclusiveness

Students should expect and demand to be treated with respect by their classmates and the course staff. All students belong here, and the staff is here to help them learn and enjoy a challenging course. If any incident occurs that challenges this commitment to a supportive and inclusive environment, students should let the staff know so the issue can be addressed. You can use the anonymous feedback tool if you would like to tell us something anonymously.

Extension Policy

Homework assignments are designed to be completed by the due date. Following this cadence will give students the best chance of keeping up with the course and avoiding unnecessary stress.

We recognize, however, that situations arise that make it challenging to complete work on time. For that reason, we allow a no-questions-asked 48 hour extension on assignments with no penalty. As assignments are due at 11pm Thursdays, this extension period ends at 11pm Saturdays. Students do not need to take any special action when using the extension.

Work submitted more than 48 hours late will only be accepted after a discussion with the instructor. If you foresee the possibility that you will not make the extension deadline, please communicate with the instructor as soon as possible.

This policy applies to all assignments except the last, Homework 8, to give the staff sufficient time to complete grading.

Collaboration

Students are allowed to discuss homework problems and course concepts with others, but they must write or type their solution individually, without assistance.

Student solutions are not group work. Students can work together to solve problems, but then, they must leave the group, taking no written or electronic records of group work with them; wait at least 20 minutes; and then write up / code up their solution on their own, unassisted.

Each student should keep anything they plan to submit as a solution completely private. Under no circumstances should they give a copy of their code or written work to another student.

Outside Resources and AI Assistance

The policy of turning in individual work, clearly precludes copying code off of the Internet. Students should not consult the Internet for problems or key-phrases. This includes Google, Stack Overflow, Reddit, and any other website.

AI tools such as GitHub Copilot or ChatGPT are also not allowed under the individual work policy. While using Copilot is entirely reasonable on personal projects, it must be turned off when completing the assignments in this course.

Such tools have essentially memorized the Internet. Asking the tool to produce code or other solutions from its memory is no different from searching for solutions on the internet and copying it. We explicitly disallow both.

On the other hand, students are allowed to look at outside resources in order to build up their understanding of course concepts and then use their understanding to solve problems. It is understanding that will get students a job. (No one will pay someone just to type prompts into ChatGPT. They can do that themselves!) Hence, any technique that short circuits the process of building up understanding is adverse to a student's long-term career goals, and so we disallow it.

We do warn students, however, that we teach a limited subset of features of the languages we use, and use specific formatting and notation, so many outside resources are not applicable to this course.

Academic Integrity

Attempting to misrepresent another student's solution as one's own, or otherwise violating the independent work policy, is unfair to the other students in the course and constitutes academic misconduct in violation of the Allen School policy. Any such violation will be reported to University, and the instructors will make every attempt to ensure the harshest allowable penalty.

In cases where one student copies the solution of another, both students have violated the policy and both will be reported. Again, all students should keep their solutions private.

If a student is ever unclear about whether their discussions with other students went over the line, they should (a) ask and (b) describe their collaboration clearly on their assignment. If they do, the worst that will happen is losing some points. That is much better than the alternative.

Disability Accommodations

Your experience in this class should not be negatively-affected by any disabilities that you may have. The Disability Resources for Students (DRS) office can help you establish accommodations with the course staff.

If you have already established accommodations with DRS, please communicate your approved accommodations to the instructor at your earliest convenience so we can discuss your needs in this course.

If you have not yet established services through DRS, but have a temporary health condition or permanent disability that requires accommodations (conditions include but not limited to: mental health, attention-related, learning, vision, hearing, physical or health impacts), you are welcome to contact DRS. DRS offers resources and coordinates reasonable accommodations for students with disabilities and/or temporary health conditions.

Reasonable accommodations are established through an interactive process between you, your instructors(s) and DRS. It is the policy and practice of the University of Washington to create inclusive and accessible learning environments consistent with federal and state law.

Religious Accommodations

Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW's policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form.

Grading

Homework Grading

Graders will identify incorrect answers in submitted solutions and deduct points commensurate with the severity of the errors made. They will aim to deduct points consistently across all submissions making the same or similar errors.

Talking to a staff member does not take away the student's responsibility to submit a correct answer. The staff will not accept incorrect answers due to a claim that some staff member said it was acceptable. Students sometimes misunderstand what TAs are trying to say, and in any case, it remains the students' responsibility to make sure their understanding of the problem statements matches up with the plain meaning of the instructions given in the assignment or class.

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

Course Grades

Overall scores for the course will be determined roughly as follows:

7% Section Participation
75% Homework
18% Final exam

Section participation work and HW0 will be graded on completion only.

Homework assignments will not be weighted equally, as they are of different length and difficulty. More involved assignments are generally weighted more heavily. In particular, we expect the individual assignments to have the following weights in the overall grade:

2.0% HW 0
6.0% each HW 1–2
9.0% HW 3
10.0% each HW 4–6
11.0% each HW 7–8

That said, we may need to adjust the weights if any assignments turn out to be much more difficult or easier than expected.

Overall percentage scores will be translated into course grades as described in the following table:

96.5% 4.0   84.0% 3.4   71.5% 2.8
94.5% 3.9   82.0% 3.3   69.5% 2.7
92.5% 3.8   80.0% 3.2   67.5% 2.6
90.5% 3.7   78.0% 3.1   65.0% 2.5
88.5% 3.6   75.5% 3.0   63.0% 2.4
86.0% 3.5   73.5% 2.9   61.0% 2.3

Grades for scores below 60% will be determined by the instructors on a case-by-case basis. (In particular, we reserve the right to pass students whose percentages would fall below 2.0 if we continued the table above.)

We expect the median grade to be about 90% on the homework assignments and 80% on the exams. Given good section participation (say 7/9 sections), that would translate into an overall percentage score of 87%, using the tentative weights in the first table above. Per the second table, that translates to a 3.5 grade as it is above 86.0% and below 88.5%.

Advice For Students

  • Do not skip class to work on homework, not even late in the quarter when students are more tired and busy. Doing so often seems like it will save time in the short run, but it will cost time in the long run.

  • Start assignments early. Aim to complete them the day before they are due. Assignments are often more difficult than expected, and students should also to leave time to make and correct mistakes. This also allows students to better focus on the new topics practiced in section.

  • Prefer the message board to office hours. Office hours get very busy, especially in the last 48 hours before assignments are due. (Yet another reason to start early is so that students can attend office hours that are less busy.) Even just before assignments are due, however, questions on the message board are usually answered within a short period of time.

  • Think about which lecture material applies to that homework problem. As described above, each assignment is intended to apply ideas from lecture, so if it does not seem that any lectures apply to a given problem, it is nearly certain that the student did not understand some part of some lecture.

  • Do not blindly trust outside resources. Most people do not program like we do in this course. A student's goal should be to solve homework problems "like a 331 student" and not "like an average programmer". Outside resources may mislead you about what we are trying to teach you.

  • Focus on understanding, not on getting points. A student's understanding of the material, not the points they received, is what will get them a job and ensure a successful career as a programmer.