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. In fact, this course is typically regarded as useful preparation for industry and technical interviews.
Prerequisite: CSE 143, or similar Java programming experience.
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.
Course Components¶
Projects¶
There will be five programming projects (P0 through P4). Most projects contain an autograded 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!
Partners¶
For the Programming Projects, you have the option to work with a partner (up to 3 collaborators in the group) and submit your work together. You will share a GitLab repo with your partner, but once you submit to Gradescope, there will be a mechanism for you to add your partners to a group. For this quarter, our Written Exercises are individual.
Exercises¶
There will be six 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 and are designed to take 1–2 hours to complete.
Exam¶
This quarter, we will have a single final exam. See the course calendar for dates. The exams are open-note and open to high-level collaboration akin to exercises.
More details about the exam will be published closer to their release.
Course Activities & Extra Credit¶
We plan to offer numerous opportunities throughout the course of the quarter to earn extra points, including lecture polling, surveys, and optional components on programming projects.
Lecture Polling¶
Each lecture will have an accompanying Google Form. You will earn extra credit for responding to these polls, and 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, so you can still fill them out even if you have to attend asynchronously for one of the lectures. You may respond to these polls at any point during that time, but late submissions will not be accepted. If you can’t make it to lecture, feel free to do the poll right before you watch the recording.
Policies¶
Grading¶
The class will be graded on an additive points system. The course is not curved; instead, your grade on a 4.0 scale is computed by the following formula:
In other words, your grade will be computed by the following table:
Points Earned ≥ | Course Grade |
---|---|
215 | 4.0 |
210 | 3.9 |
205 | 3.8 |
200 | 3.7 |
195 | 3.6 |
… | |
165 | 3.0 |
115 | 2.0 |
50 | 0.7 |
The points are distributed as follows:
Component | Points Available |
---|---|
Projects | 85 (15–20 points each) |
Exercises | 90 (15 points each) |
Final Exam | 45 |
Course Activities & Extra Credit | 15–20 |
Lateness¶
Each student receives fifteen 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. Lateness is calculated by rounding up to the next full day.
Once a student has used up all their 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.
No assignment may be submitted more than 3 days (72 hours) late without permission from the course staff. 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, 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.
There is a small grace period (in the order of minutes) for last-minute submission issues, but you should plan ahead to avoid depending on it.
Note on Extenuating Circumstances: Late days are intended to give you flexibility for “normal” situations that take up your time, like going back home to celebrate a family member’s birthday or prioritizing study time for another class. On the other hand, you should not be penalized for situations outside of your control and are not obligated to use late days for them. If you have extenuating circumstances, 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, research, 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 of 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.
Regrades¶
Mistakes in grading absolutely happen! If you feel that we have graded a written assignment 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.
In general, you can begin submitting regrade requests 24 hours after the grades are published for that assignment. The regrade window remains open for 7 days after that time. Once regrade requests close, we expect to get back to you within a week; you will get an email from us once that happens.
When writing a regrade request, please address the rubric items and briefly discuss why they were applied incorrectly. We cannot respond to regrade requests (including alternate arguments) over email after they are due, so be sure to include all the details in your first regrade request. If you are unsure about why you have been marked down, please ask us first!
Getting Help from Staff & Peers¶
Discussion Board¶
Ed serves as our online discussion forum. 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.
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. 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¶
This course welcomes all students of all backgrounds. The computer science and computer engineering industries have a 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 Sonia 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 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, and we encourage you to work with us to make that happen.
Accommodations¶
Note on Accommodations: We understand that accommodations that are requested through the university can take time to be approved, with processing times sometimes extending beyond this quarter. Our Extenuating Circumstances policy applies equally in requesting class accommodations, and you should feel free to contact us at any time to see if we can help directly, even if university officials have yet to review your request.
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 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.
Registrar Instructions for Religious Accommodations
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.