Info

All times listed on the 373 course website are in Pacific Standard Time (Seattle). If you are in another time zone, it is your responsibility to know how a due date in Seattle time relates to your time zone. You can use this site to translate times.

Info

Not registered for the course, but interested in following along? Check out the materials we provide publicly for this quarter.

Goals

In this course, you will gain a strong theoretical and conceptual understanding of common data structures and algorithms, as well as how to apply them within larger programming projects.

Specific 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 and divide-and-conquer.

This course is 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.

Finally, this course emphasizes the importance of making and justifying design decisions. Taken together, all of the above skills are chosen to set you up for success in a software-related role, and in particular this course is typically regarded as useful preparation for industry and technical interviews.

Prerequisite: CSE 143, or similar Java programming experience.

Course Components

Grade Breakdown

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

Category Weight
Programming Projects 40%
Written Exercises 30%
Exam I 15%
Exam II 15%
Total 100%

Projects

There will be five programming projects (P0 through P4). Each project contains an auto-graded programming portion and a writeup component. Starter code is distributed on the CSE GitLab and your solutions to both parts are 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 five individual written exercises. 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.

Exams

There will be two exams during the quarter—see the course calendar for dates. The exams are open-note. Instead of being timed, each exam will be open for 1 week. The exams are written to be completed within one sitting, but you can use the entire week to work on them.

We will announce special Exam Office Hours for you to ask any clarification questions about the problems, but TAs will not give you detailed help or hints on your solutions.

More details about the exams will be published closer to their release.

Partners

For the Programming Projects, Written Exercises and Exams you have the option to work with a partner and submit your work together. For the Written Exercises and Exams you will indicate who your partner is via Gradescope. For the Programming Projecs you will share a GitLab repo with your partner, but trigger your submission and indicate your partnership via Gradescope.

  • Work with someone you know. You will have the option of choosing a partner before starter code for P1 is distributed.
  • Join the partner pool. We will randomly pair you up with another student. This is the default if you do not explicitly choose a partner.
  • Work alone. If you would like to work alone, you must explicitly opt-out of the partner pool. We do highly encourage a partner, as our projects are designed with a two-person workload in mind.

Lecture Polls - Extra Credit

Each lectue will have an accompanying Poll Everywhere question. You will earn extra credit for responding to these polls, you will not be graded on “correctness”. The lecture polls will open at the start of lecture and remain open until the start of the next lecture. You may respond to these polls at any point during that time, but late submissions will not be accepted. The extra credit can affect your grade by potentially pushing you up to the next grade point if you are very close (e.g. 3.0 to 3.1).

Course Grades

A very common question students ask is: “Is this class curved?” Curving is the process of assigning course grades so that there is a fixed, pre-determined mean or median. We do not curve in this course!

Instead, we will assign course grades using a bucket system: if you earn at least the percentage specified in the left column, your course grade will be at least the grade listed on the right. These are minimum guarantees: your course grade could be higher than what this table suggests. Do note, we do not make any guarantees of the course grades within these buckets.

Percent Earned Course Grade
95 3.5
85 3.0
75 2.5
65 2.0
50 0.7

If you have a specific goal in your course grade, please feel free to reach out to the course staff or directly to the instructor and we can work together to talk about what you can expect in terms of meeting that goal.

Policies

Lateness

Each student receives seven late days for the entire quarter. You may use late days on projects or exercises, and each allows you to submit up to 24 hours late without penalty. For example, if a project is due on Thursday at 11:30pm, you could use 2 late days to submit on Saturday by 11:30pm with no penalty. Once a student has used up all their late days, each successive day that an assignment is late will result in a loss of 5% on that assignment. The deduction will not be immediately applied on Gradescope, but will be reflected in the final grades you see on Canvas.

No assignment may be submitted more than 3 days (72 hours) late without permission from the course instructor. In other words, this means there is a practical upper limit of 3 late days usable per assignment. If unusual circumstances truly 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, we may be able to show more flexibility in some cases.

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.

There is a small grace period for last-minute submission issues, but you should plan ahead to avoid depending on it.

Note on Extenuating Circumstances: If you have extenuating circumstances for an assignment, please contact the instructor as soon as possible to discuss accommodations. See the section below on Extenuating Circumstances.

Collaboration

Learning anything can be challenging! 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 want a class that is open, welcoming, and collaborative, where we can help each other build the highest possible understanding of the course material. However, to encourage everyone to learn the material, we impose restrictions on the information you may share with your classmates (see below).

Whenever you receive help from a third-party source, 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.

Ultimately, the goal of enrolling in this course is for you to learn this material, so that you will be prepared for exams, for research, for job interviews, etc. Engaging in academic misconduct does not help you towards that goal. If you are in doubt about what might constitute cheating, send the course staff an email describing the situation and we will be happy to clarify it for you.

Collaboration on Projects

You are allowed to fully collaborate with your project partner and submit a single submission together. For working with students outside of your partnership, you must observe these additional guidelines:

  • You should never directly show another student your code.
    • Instead, you are welcome to describe what is happening either verbally or in text.
    • It is okay to share small snippets of code, but this should be only a couple lines at most, never entire methods.
  • You should not be working on assignments in close collaboration (“in lockstep”).
    • Your work should not substantially resemble anyone else’s besides your partner!
    • As a guiding principle, collaborate on specific issues or questions as opposed to the entirety of an assignment.
  • You should never distribute solutions at any time, even after the course is over.
    • “Distribution” includes uploading them to public websites (e.g. a GitHub repo), group repositories (e.g. your club’s/frat’s/sorority’s “answer bank”), or private chats (e.g. a group chat with a few friends).

We may run MOSS (Measure of Software Similarity) on student submissions to detect over-collaboration.

Course Tools

This quarter, we will use a number of different tools in CSE 373. Reach out to the course staff if you have questions about using any of them. Please see the Course Tools page for more information about the particular tools we will use this quarter and our policies surrounding them.

Getting Help from Staff & Peers

Discussion Board

Ed and Discord both serve as online discussion forums. For most questions about the course or materials, they are 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 to the course if you are more comfortable doing so.

To meet with us, the best way is to visit our virtual Office Hours. Many of us are available at other times by appointment. In Office Hours, you can ask questions about the material, receive guidance on assignments, and work with peers and course staff in a small group setting.

Office Hours

Office Hours are scheduled times where 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.

Because of the unique circumstances in our online quarter, the majority of office hours this quarter will be held via Discord. More information about Discord and its associated privacy policy can be found on the Course Tools page of this website.

Course Climate

This course welcomes all students of all backgrounds. The computer science and computer engineering industries have significant lack of diversity. This is due to a lack of sufficient past efforts by the field toward even greater diversity, equity, and inclusion. The Allen School seeks to create a more diverse, inclusive, and equitable environment for our community and our field. You should expect and demand to be treated by your classmates and the course staff with respect. If any incident occurs that challenges this commitment to a supportive, diverse, inclusive, and equitable environment, please let Kasey know so the issue can be addressed.

Extenuating Circumstances: “Don’t Suffer in Silence”

We recognize that our students come from varied backgrounds and can have widely-varying circumstances. We also acknowledge that the incredibly unusual circumstances of this particular quarter may bring unique challenges. If you have any unforeseen circumstances that arise during the course, please do not hesitate to contact the course staff or the instructor to discuss your situation. The sooner we are made aware, the more easily we can provide accommodations.

Typically, extenuating circumstances include work-school balance, familial 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 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, and we encourage you to work with us to make that happen.

Disabilities

Embedded in the core values of the University of Washington is a commitment to ensuring access to a quality higher education experience for a diverse student population. Disability Resources for Students (DRS) recognizes disability as an aspect of diversity that is integral to society and to our campus community. DRS serves as a partner in fostering an inclusive and equitable environment for all University of Washington students.

DRS Instructions for Students

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

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

Our code and our projects are made better by considering a variety of viewpoints. Your course staff is committed to the values outlined in the Allen School’s inclusiveness statement, and you are expected to uphold a supportive and inclusive learning environment.

If, at any point, you are made to feel uncomfortable, disrespected, or excluded by a staff member or fellow student, please report the incident so that we may address the issue and maintain a supportive and inclusive learning environment. Should you feel uncomfortable bringing up an issue with a staff member directly, you may consider submitting anonymous feedback or contacting the Office of the Ombud.