Info

Not registered for the course, but interested in following along? Check out the materials from the Summer 2022 offering of this class instead.

Course Information

Prerequisites: CSE 123, CSE 143, or similar programming experience.

Registration & Overloads: Contact CSE Advising (ugrad-adviser@cs).

CSE 373 covers the theoretical and conceptual foundations of common data structures and algorithms. We emphasize the importance of creating and defending design decisions. Then, we apply these decisions in larger programming projects.

Specific technical topics we will cover include:

  • Data Structures and ADTs: lists, stacks, queues, sets, dictionaries, linked lists, arrays, trees, balanced trees, AVL trees, hash tables, priority queues, binary heaps, and disjoint sets.
  • Graphs and Graph Algorithms: graph search, shortest path, and minimum spanning trees.
  • Algorithm Analysis: asymptotic analysis, and P and NP complexity classes.
  • Sorting: insertion/exchanging and divide-and-conquer approaches.

This course is also designed to have a practical component to help you gain basic familiarity with techniques used within industry. In particular, you’ll be asked to:

  • Work on programming projects and integrate your work in an existing codebase.
  • Learn how to use an industrial-strength IDE.
  • Learn techniques for checking correctness: writing unit tests with JUnit, designing and checking invariants, etc.
  • Learn how to collaborate on a single code base using source control repositories.

Taken together, all of the above skills are chosen to set you up for success in a software-related role. In fact, this course is typically regarded as useful preparation for industry and technical interviews.

Tools

We’ll be using a number of different services in CSE 373. Take a look at the Course Tools page for more information about these particular tools and our policies surrounding them. Please reach out to the course staff if you have questions about using any of them.

Components

Projects

There will be five programming projects (P0 through P4). This quarter, these projects are autograded, and you can resubmit on Gradescope until you get to the grade that you want.

For the programming projects, you have the option to work with a partner and submit your work together. You will share a GitLab repo with your partner, and once you submit to Gradescope, there will be a mechanism for you to add your partners to a group.

Starter code is distributed on the CSE GitLab and you will make changes there. Afterwards, everything is submitted on Gradescope. We will discuss how to use the technology for the course in the first project, so don’t worry if those tools don’t sound familiar to you!

Exercises

There will be seven individual written exercises (EX1 to EX7). They focus on mechanical, theory, and basic application problems to reinforce content from lecture, and are explicitly designed to provide practice for the exams.

Exercises are distributed via Gradescope. They should take an hour or two to do. In each Lecture Kasey will cover a problem that is extremely similar to a question from the current Exercise assignment. Each Exercise will be made of 4 questions, 3 of which will be discussed directly in Lecture and 1 that will require a bit more of your own thoughts. This 4th question will give you practice in answering design or short answer questions like those that will be present on the Exams. Questions 1 - 3 will be automatically graded and Question 4 will require TA assessment. You can submit your answers to the Exercises as many times as you wish, we will grade the latest submission. You will only know your grade on the Exercise once we return the grades to you, we do not release the solutions to the Exercises.

If you attend Sections 2 through 8 inclusive we will drop your lowest Exercise grade.

Exams

This quarter, we will have one final exam that will be held during lecture time. This exam will focus more on design and analysis problems.

You can find specific exam date on the calendar. We will announce more details about the exam as we get closer to them.

Lectures

Lectures are on Mondays, Wednesdays and Fridays exempting holidays and in class assessments. Lectures are designed to introduce you to the conceptual topics and provide an avenue for discussion amongst your peers. However, please note that while lecture is designed to introduce you to topics, to fully master the ideas you will need to do practice on your own which we hope Section, Exercises, Projects and Exams will provide.

Each lecture will include an interactive PollEverywhere question, if you interact with the vast majority of these polls to indicate lecture participation Kasey will round your GPA up to the nearest 10th of a point (eg 3.44 to 3.5). Each Lecture Poll will open just before lecture starts and stay open until just before the start of the next lecture if you choose to participate asynchronously.

Lecture will also cover at least one problem that is extremely similar to a question on the current Exercise.

Section

Sections are on Thursdays and lead by your individual TA or TAs. Section is designed to give you practice with topics introduced in lecture, walk you through problems similar to what you will see on your Exercises and help prepare you conceptually for the Exams.

Section attendance is not graded, but if you wish to qualify for the “drop your lowest Exercise score” policy you must register your attendance for sections 2 - 8. Your TA will record your in person section attendance. If you are unable to attend section in person you can email your TA the weekly set of problems by Sunday at 11:59pm and your section participation will be recorded. If you are experiencing further issues that prevent you from either attending in person or submitting your answers to your TA before Sunday please email cse373-instructors@cs.washington.edu for further accomodations.

Extra Credit

We plan to offer numerous opportunities throughout the course of the quarter to earn extra points, including surveys, and optional components on programming projects.

Policies

Grading

Your percentage grade in this course will be weighted using these categories:

Category Weight
Projects 40%
Exercises 30%
Midterm 15%
Final 15%

When converting percentage grades to GPAs, we guarantee minimum grades using the table below. If you achieve the percentage specified in the left column, we start with the corresponding minimum grade on the right column. Then, we adjust your grade upwards, taking into account of your trajectory through the quarter.

The table shows absolute minimums and are meant to be helpful for planning around strict cutoffs, like for a scholarship or a major distribution requirement; however, they are on the low side and your final grade tends to skew higher:

Percent Earned Grade Guaranteed (≥)
92 3.5
82 3.0
72 2.5
62 2.0
50 0.7

What we will not do is to put you on a curve, which is a process of assigning course grades so that there is a fixed, pre-determined mean or median. This would discourage collaboration and create unnecessary competition.

Lateness

You have five late days to spend throughout the quarter. You may use late days on projects and exercises. Each late day allows you to submit up to 24 hours late without penalty. Lateness is calculated by rounding up to the next full day.

Once you use up all of your late days, each successive day that an assignment is late will result in a loss of 10% of the assignment’s point value. The deduction will not be immediately applied on Gradescope but will be reflected in the final grades you see on Canvas.

You cannot submit an assignment more than three days (72 hours) late without permission from the course staff. This means there is a practical upper limit of three late days usable per assignment. If unusual circumstances beyond your control prevent you from submitting an assignment, you should discuss this with the course staff as soon as possible. If you contact us well in advance of the deadline, it would be much easier for flexibility to be arranged.

To use a late day, just submit late and we will keep track of late days used and lateness deductions for you. Note that late days are individual, so a late submission of a partner programming assignment will use a late day from each group member, and lateness deductions will apply to each partner separately according to the current state of their late days.

Late days are intended to give you flexibility for “normal” situations that take up your time, like a birthday or prioritizing study time for another class. You are not obligated to use late days for situations outside of your control. If you have extenuating circumstances, please contact the instructor as soon as possible to discuss accommodations. See the Extenuating Circumstances section.

Collaboration

Learning anything can be challenging. In general, we encourage you to discuss course activities with your friends and classmates as you are working on them—ask questions, answer questions, and share ideas liberally.

We do impose some restrictions on the information you may share with your classmates. They all amount to some form of “share strategies and thought processes, but not final answers.”

For programming projects, you are allowed to fully collaborate within your project group. But if you are working with students outside of your group or on the written exercises, you must observe these guidelines:

You cannot… But you can…
Directly show another student large portions of your code or solutions in a way that would negate the spirit of the assignment. Describe what is happening either verbally or in text, or share small snippets of code that do not circumvent conceptual understanding.
Work on assignments in close collaboration (“in lockstep” or line-by-line). Collaborate on specific issues or questions as opposed to the entirety of an assignment.
Use an AI-assisted tool (e.g., GitHub Copilot, ChatGPT) to generate solutions towards a part of a graded assignment. Use an AI-assisted tool to explore concepts, generate trivial/boilerplate helper code, or interpret an error message.
Distribute your solutions at any time, even after the course is over. This includes uploading them to public websites, test banks, or private chats. Store your solutions privately and only bring them up when you are discussing your accomplishments (e.g., in a job interview).

Additionally, when you receive help from someone, please cite any help that you receive as a method comment in code or as a footnote in writeups. There is no penalty for working with too many classmates. When in doubt, you should always err on the side of giving credit.

The Allen School has a longer guide on over-collaboration and cheating. If you are in doubt about what counts as cheating, create a private post describing the situation and we will be happy to clarify it for you.

Regrades

If you feel that we have graded something incorrectly, you can submit a regrade request on Gradescope directly under that question (tutorial here). You can submit a regrade request for every question that you’d like us to take a look.

Unless we mention otherwise, you can begin submitting regrade requests 24 hours after the grades are published for an assignment. The regrade window remains open for 7 days afterwards. After regrade requests close, we expect to get back to you within a week; you will get an email from Gradescope once that happens. The regrade window means you should address any grading concerns as they arise, and we cannot accept them later in the quarter.

When writing a regrade request, please address the rubric items and briefly discuss why they were applied incorrectly. If you are unsure about why you have been marked down, please ask us first—and you should feel free to do so, because mistakes in grading absolutely happen.

Getting Help from Staff & Peers

Discussion Board

Ed serves as our online discussion forum. For most questions about the course or materials, it is the right place to ask: the course staff read them regularly, so you will get a quick answer. On Ed, you can also submit questions anonymously or privately if you are more comfortable doing so.

Office Hours

Office Hours are scheduled times when you can meet with members of the course staff to discuss course concepts, get assistance with specific parts of the assignments, or discuss computer science and/or life outside of it. See Office Hours for the schedule and the locations.

To meet with us and get face-to-face help, the best way is to visit our Office Hours. Many of us are available at other times by appointment.

Course Climate

Extenuating Circumstances: “Don’t Suffer in Silence”

We are dedicated to the proposition that you are a human being first and a student second. If anything arises during the course, please do not hesitate to contact the course staff or the instructor to discuss your situation. Our simple rule on extenuating circumstances: keep an open line of communication, and the sooner we are made aware, the more easily we can provide accommodations.

Typically, extenuating circumstances include work-school balance, mental health needs, family responsibilities, health concerns, or anything else beyond your control that may negatively impact your performance in the class. Additionally, while some amount of “productive struggle” is healthy for learning, you should ask the course staff for help if you have been stuck on an issue for a very long time.

Life happens! While our focus is on providing an excellent educational environment, our course does not exist in a vacuum. Our ultimate goal as a course staff is to provide you with the ability to be successful. We want to work with you so that this can happen.

Accommodations

On Requesting Accommodations

This section covers the accommodations that federal and state laws require the university to provide. However, we understand that the approval process for accommodations requested through the university can be time-consuming, and processing times sometimes extend beyond the current quarter. Additionally, we acknowledge that the accommodations offered through these channels may not cover all circumstances.

Our Extenuating Circumstances policy applies equally in requesting class accommodations, and you should contact us at any time to see if we can help directly. We are reasonable people and want to make sure that you have all the tools you need to be successful.

Disabilities

The Disability Resources for Students (DRS) office is tasked with ensuring that you are not negatively affected by any disabilities that you may have.

To request accommodations through DRS

If you have already established accommodations with DRS, please communicate your approved accommodations to the lecturers 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 lecturer(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

The University Registrar handles accommodations related to faith and conscience, for all three campuses.

To request 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.

Inclusion & Incident Reporting

We welcome students of all backgrounds. You should expect and demand to be treated by your classmates and the course staff with respect.

The computer science and computer engineering industries have not traditionally been very diverse due to a lack of sufficient past efforts towards it. We want you to feel like you have a place in this class. The Allen School is also working to create a more inclusive and equitable environment for our community and our field.

If you are made to feel uncomfortable, disrespected, or excluded by a staff member or fellow student, you can:

  • Report the incident to the instructor directly. We can resolve issues within the course or help you navigate resources.
  • Send anonymous feedback to the course staff or Allen School leadership. We cannot see the author of a feedback e-mail (sample), unless you disclose your identity in some way in the message.
  • Use the College of Engineering incident reporting tool. You can ask to be contacted by an engineering advocate, a member of the trained staff who can connect you to additional resources and help you articulate next steps.
  • Contact the Office of the Ombud. The Ombud is a neutral third party to whom you can tell your story and get informal resolution help. This is a good option if you don’t want to initiate an official process just yet.