Syllabus
Course Goals
CSE 417 is a non-major student's introduction to algorithms. By the end of this course, you will be able to:
- Model word problems as computational problems.
- Determine an appropriate algorithm design paradigm for a new problem.
- Design an algorithm for a new problem and argue its correctness.
- Identify and cope with computational problems that are infeasible.
- Consider the implications of modeling decisions in the real world.
Communication is a key aspect of this course. It is not enough to write code that works, you will also need to convince others that your code will work! Similarly, you will have to explain your ideas clearly enough that someone else can understand them.
Assessment
This quarter we are offering the course in a mastery-grading-based format. The goals of this mode are two-fold:
- The concepts in an algorithms course often take a little bit of time to click, and are somewhat independent of each other. We care more about whether you understand a topic by the end of the quarter than in the middle. We hope the format will allow you to return to questions and topics you missed the first time.
- We hope to give you some flexibility in which problems you do, allowing you to focus on the aspects of the course that are more important to you.
We will not score your submissions for exact points (i.e., you won't get 18/20 on a problem). Instead, every problem will get one of the following scores:
Grade | Description |
Excellent (E) | Main idea and edge cases are all correct. Would have gotten full credit (or extremely close) with points-based grading. |
Satisfactory (S) | Main idea is correct, but some edge cases or follow-up questions are wrong or missing. Would have gotten about 80-90% on points-based grading.
|
Not Yet (N) | Some important error is made, but substantial progress toward a solution. Would have gotten above 50% on points-based grading. |
Unassessable (U) | Directions not followed (e.g., used a library or approach that isn’t permitted) or otherwise shows no substantial progress. |
The main goal with this grading system is to change the focus (and time investment) of grading -- instead of spending significant time focusing on differentiating 1 point mistakes from 2 point mistakes, TAs can spend time generating helpful feedback, and then spend some additional time on grading resubmissions.
We will release 8 homeworks during the quarter. The assignments will often have more problems on them than we expect you to answer, allowing you to choose which fits better with your interests.
Problem Types
There are two types of problems on homeworks: mechanical and long-form.
Mechanical problems usually ask you to execute an algorithm or give short answers, like an input that causes bad-behavior. These problems are usually shorter and require a surface-level understanding of what was discussed in lectures.
Long-form problems generally involve designing an algorithm -- either by-hand (in pseudocode) or in actual code. Long-form problems also might ask you to consider real-world effects of using algorithms or to prove facts about algorithms. These problems usually require applying the contents of lectures to new scenarios.
Logistics
On the day a homework is due, the gradescope submission boxes will close. The TAs will grade every problem you submit. Until the deadline, you are free to submit any number of problems on the assignment.
Each homework will have the maximum number of problems that count -- we will give you the highest scores among your submissions in those categories.
Starting with homework 2, we will give you a chance to resubmit up to 2 problems from earlier homeworks (whether you initially submitted that problem or not). We will add that score to the appropriate category
on the homework on which the problem originally appeared. If you already submitted that problem, we will count the higher of the scores between your submissions.
For example, if on homework 1, you got Es on the two long-form problems and then submit a new problem from HW1 long-form problem with HW3 that gets an E, you will then have 3 Es on long-form problems on homework 1.
If on homework 1, you got one E and two S on long-form problems and then resubmit a problem from HW1 scored S on the HW3 resubmission box and it gets an E, then your score for homework 1 long-form problems will be 2 E's and 1 S.
If on homework 1, you got one E and two S on long-form problems and then resubmit the problem scored S with HW3 and it gets an N, then your score for homework 1 long-form problems will still be 1 E and 2 S's (i.e., your grade cannot go down from resubmission).
Coding problems will also be submitted to gradescope, with test cases provided. For coding questions, your score is based on:
- the tests in gradescope
- following any problem specific directions (e.g., if we say you cannot use recursion then your final code cannot use recursion).
If you violate point 2, your score for the problem will be a U.
Otherwise, your score will be calculated as follows:
Score | requirement |
E | all tests pass. |
S | at least 80% of the points from tests on gradescope. |
N | at least 50% of the points from tests on gradescope. |
We do not have hidden tests (other than manually verifying the problem-specific directions).
We will verify requirement 2 for all problems at the end of the quarter, after the submission boxes have closed -- the directions should leave no ambiguity as to whether you are following them or not; please ask us during the quarter for clarification if you aren't sure whether you're violating one.
If you wish to get a higher grade on a programming question after the deadline, you can continue to work on that problem (the gradescope tests will remain accessible). You must still use a resubmission slot to update your score on the problem. You are encouraged to continue putting new versions of the code up on gradescope (you don't use any resubmission slots by updating code there).
Grade Guarantees
We will have these minimum guarantees when we convert from course submissions to final grades. That is, if you meet the conditions in the table, your final grade can be no lower than the grade shown in that row.
Grade |
Mechanical Problems |
Long-Form Problems |
4.0 |
6E and 2S |
22E and 1S |
3.5 |
6E and 1S |
18E and 4S |
3.0 |
5E and 1S |
14E and 3S |
2.5 |
4E and 1S |
8E and 8S |
2.0 |
2E and 2S |
6E and 7S |
0.7 |
none |
10S, with at least one on five different HWs. |
To meet the guarantee you must meet every requirement in the list. So, for example, if you never submit a mechanical problem, you could only meet the 0.7 guarantee.
In the chart “extra” E grades count as S grades. So if you have 22 E grades on long form problems, you meet the long-form requirement for a 3.5.
You must meet every requirement to be guaranteed of a particular grade, but we may occasionally give a grade to someone who has not met all requirements for a guarantee (see interpolation below).
Interpolation
We will use the full 4.0 grade scale (it is possible to get a 3.7 or 3.3, for example, even though those rows aren't in the table).
At the end of the quarter, we will develop formulas to interpolate between grade breaks, based on these factors
- The number of S or better scores on long-form problems beyond required.
- The number of E scores on long-form problems beyond required.
- The number of S or better scores on long-form problems beyond required.
- The number of E scores on long-form problems beyond required.
We will use these factors to decide on a grade ``between'' the grades shown. For example, if you meet the requirement for a 3.0, but don't meet the requirements for a 3.5, we will ``interpolate'' to decide on a grade between 3.0 and 3.4.
The formulas will place weight on these factors in the order listed (e.g., category 1 above will always have at least as much weight as category 2). We will not release these formulas at the end of the quarter, nor will we debate whether another formula might have made for different results.
The formulas may vary for different ranges (e.g., there may be different weights for the [3.5, 3.9] range than for the [2.5, 2.9] range).
When we interpolate, we may occasionally move a grade at the next guarantee or higher. For example, if you have only 5 E grades for mechanical problems, but you have 24 E grades for long-form problems, you don't have a guarantee of a 3.5 from the chart, but you would end up with a grade of 3.5 or above, since you were well above the requirement for long-form problems. These changes are rare and purely at the discretion of the instructor.
What about N and U scores?
N and U scores do not have a direct effect on calculating grades at the end of the quarter. An N grade means you still had something to learn from doing the problem; the goal of the resubmissions is to give you a chance to take advantage of that opportunity when you can. This can sometimes make an N seem 'worthless', but we encourage you not to think about it that way. Before submitting the problem, you'll have spent time thinking about it: eliminating approaches that don't work, and getting intuition about the problem, even if you haven't gotten all the key ideas yet. You will also get feedback to help you narrow in on the fixes you need.
For students near boundaries that affect whether the course is 'passed' (specifically 0.7 [whether credit is awarded to undergrads], 2.0 [whether the course counts for some majors], 2.7 [whether credit is awarded to graduate students], and 3.0 [whether the course counts for some majors]), we do look for instances where a student is close to a boundary but a number of good-faith attempts at problems only gathered N scores. In such cases, we may decide to increase a grade to above the relevant boundary. These changes are purely at instructor discretion (and only for these grade boundaries). If you are concerned about whether you are on track to pass the course, we strongly encourage you to contact Robbie partway through the quarter to discuss your progress.
Lecture Activities
In lecture, we will ask you to respond to polling questions.
These activities are not graded -- they help you catch common misconceptions, and help me adjust how fast I'm going during lecture, but do
not affect your grade.
Academic Integrity
The goal of our exercises is for you to fully understand and internalize the approach to the materials. To that end, we take academic integrity very seriously. We refer violations of
departmental policies to the Office of Academic Affairs.
If you are found responsible for an academic integrity violation, you will receive a U grade on that problem, that problem will be counted as one of your highest scores for that assignment (regardless of if other scores are higher), and you will not be permitted to receive a higher grade on future resubmissions of that problem.
Collaboration
You are allowed (and encouraged!) to discuss homework problems with other students. With algorithms problems, it's very common to need one or two key insights that are much easier to discover talking out loud with others. But, to make sure you are learning the content while collaborating, we require that you:
- Do not take away any notes or screenshots from your discussion.
- Take a 30-minute break1 before writing up your solution individually.
- Cite the names of all of your collaborators somewhere in your writeup.
Programming problems must also be written up individually. That means you may discuss plans with others (e.g., which data structures you plan to use) and you may help each other debug, but you may not write code while looking at another student's code.
If you are confused as to whether or not some collaboration is allowed, ask us! No set of rules will be completely
exhaustive.
If something weird happens, please tell us too! We will not penalize you if you tell us about it before turning in the assignment.
Resources Outside of CSE 417
You are strongly encouraged to seek out resources beyond official course resources -- very often it takes two or three different explanations for a concept to click, so finding different explanations is a good thing -- with the following caveats:
- Definitions and terminology can differ significantly (and subtly!) depending on the author. Be careful that other resources are saying what you think they are saying.
- You may not search with the intent of finding a solution to the exact homework problem being asked.
- You may not use commercial tutoring resources like Chegg for the problems we ask, nor post our materials or your answers to those websites.
- You may not publicly post code you have written for this course, even after the course is over.
Artificial Intelligence Policy
How we think about AI systems
Artificial Intelligence (including programming tools like co-pilot, and large-language models like chat-GPT) are becoming more useful tools in computer science. While it is good to learn how to use these tools, it is important to gain foundational skills that do not rely on tools.
We encourage you to think of AI-systems similarly to how you think about calculators. Calculators can do arithmetic much better than you can, but it is still useful to be able to do arithmetic without a calculator (for example, to be able to check that an answer from a calculator is reasonable, when a question is in an inconvenient form for the calculator, or when a question is so simple you can answer a question faster than you can access a calculator).
Calculators are much better at multiplying one-digit numbers than you are, nonetheless teachers made you memorize and practice with times-tables and multiplying two-digit numbers. Times-tables are a needed skill to be able to do the basic arithmetic that is still useful even with calculators. In the same way, we may ask you questions that AI can solve more quickly than you can---but if you never practice fundamentals, you'll never be able to solve those more complicated problems.
Specific Policies
- You may not ask an AI system to 'do your homework for you'
- In particular, you may not put a question we ask (or a modification of it, or a part of it) into a system like chat-gpt. The staff puts significant effort into homework problems that will help you learn by working with them. You will learn more by working on a problem for an hour (even if you get stuck!) than just by reading a solution; putting questions directly into these systems robs you of the chance to learn.
- You may not use a system like co-pilot (or chat-gpt) to generate code. You are expected to type all of your code yourself.
- But you may
- Use an AI system to help you word things (for example, to help you translate a subtle idea from your native language into English, or to make an idea you have more formal). We encourage (but do not require) that you limit yourself to wording one sentence at a time. When using these systems, it is easy to lose track of the main idea, which is what we really want you to learn. Rewording one sentence at a time helps you focus on what's important.
- Use an AI system to generate examples of fundamental operations you've forgotten, or how do do something in a new programming language. For example, questions like 'What does a loop that uses an Iterator for a Queue in Java look like?' is fine
- If you do use an AI system, you should remember:
- You are still responsible for the correctness of your submission. We will not accept regrades that say an AI system mistranslated a correct idea of yours, for example
- You must state that you used an AI system in generating your answer. Cite it as you would a human collaborator, along with generally how you used it (e.g., 'I used chat-gpt to make an explanation I drafted sound more formal in problem 3' or 'I used google translate to translate an explanation I drafted into English').
- You're taking this class for a reason! Whether you're hoping to improve programming skills, prepare for technical interviews, or just learn more about algorithms, there are tasks you'll want to do (soon!) where you might not have access to AI systems at all. You don't want chat-gpt to get you a good grade and then be unable to pass a tech interview because you didn't learn as much as you would have otherwise.
Scenarios
What happened? | Is it a violation? |
When searching for general information, you accidentally find the exact question we asked. You tell the staff, and provide a link to what you found. | Not a violation! We’ll say “thanks for letting us know!” and make sure you didn't plagiarize. There won’t be a penalty but only a warm, fuzzy feeling. |
You and a friend separately write up solutions, then compare. Your friend suggests that your conclusion is a little unclear. You formulate a new conclusion on the Zoom call together. | Violation! That is no longer your individual writeup. |
You and a friend separately write up solutions, then compare. Your friend suggests that your algorithm runs in time O(m+n) not O(m^2). You wait 30 minutes, then return to your writeup, decide your friend was right, and update your writeup. | Not a violation! Bug fixes and minor rewordings done by you at another's suggestion are fine. The writeup is still substantially yours. |
You find a textbook with sample solutions to similar problems. You see that they like to introduce variables with “Consider” and use “hence” instead of “because.” You copy these words, because they seem cooler. | Not a violation! Single words or stock phrases are things you can learn from. It is not a violation to emulate style (but "hence" is a little archaic). |
Late Policy
Since we allow for resubmissions of two problems every week, we do not have late days. We have separate submission boxes for every problem, so you are encouraged to turn in problems as you finish them (rather than turning them all in at once).
Resubmissions are intended to handle the "normal" difficulties during a quarter (midterms in another class, family birthday party to attend, bad colds).
If you have a more extreme situation (e.g., an extended illness or a family emergency) contact Robbie (via email) for accommodations. We can sometimes allow for shifted deadlines or extra resubmissions in extreme cases.
Course Tools
Panopto
Lectures will be recorded and posted automatically to the university's panopto site. The site will be accessible via a link on Ed.
Zoom
While we hope to run the course primarily in-person, some office hours will be held online. If we have a synchronous lecture as part of our contingency plans, we will use zoom.
Zoom meetings will be restricted to accounts logged in with @uw.edu email addresses. If you have trouble joining a meeting, make sure you choose the "Sign in with SSO" option.
Ed
Ed is our discussion board and the right place to ask any questions about the course.
We will happily answer questions from lecture or about general concepts. We also will answer clarifications about homework (e.g. correcting typos). You are most encouraged to answer each other’s questions on the message board as well.
If you have a question that might reveal your approach to a homework problem, you must ask the question privately. For accommodations and other private questions, you can ask privately on Ed or email the instructor directly. Only you and the course staff can see a private question on Ed.
Gradescope
Gradescope is the tool to turn in completed assignments. After grading, you can also find our feedback there and submit regrade requests if needed.
You will get an automatic email with account setup instructions before HW1 is due.
Canvas
We will only use Canvas for gradebook syncing (at the end of the quarter). We will not communicate through Canvas -- please monitor this website and Ed instead.
Java
Homeworks frequently contain a small programming portion. Because this course assumes knowledge from CSE 373, these programming questions are given in Java.
If you do not already have Java from prior quarters, you can grab it from
AdoptOpenJDK. We expect any JDK above 8 would work.
Accommodations
If you have, or think you may have, a temporary health condition or permanent disability, contact
to get started with accommodations.
Accommodations for faith or conscience reasons must be requested within the first two weeks using the Registrar’s request form. The UW’s religious accommodations policy is available
here.
Your performance in this course should not be affected by circumstances beyond your control. We can still work with you for situations other than the university-wide accommodations. If anything does come up, you should contact the course staff (as early as you can).
Contingency Plans
Lectures will be recorded; while in-person attendance is encouraged where possible, so that you can ask questions and discuss with your fellow students, we provide lecture recordings so that if you need to isolate, you can still see lectures (recordings are also available if you wish to review content or just slow material down).
We will have some office hours via zoom.
In the event of illness for the instructor or a TA, we may use any of the following strategies to keep the course running (in order of preference):
- Finding a substitute staff member (to run lecture or conduct the office hour)
- Converting a lecture or office hour from in-person to zoom-only.
- Providing an old recording for lecture or rescheduling an office hour.
Regardless of whether a lecture is conducted in-person or on zoom, we will provide a recording on panopto.
1. Some CSE instructors have previously recommended watching an episode of Gilligan’s Island for that break, but Gilligan’s Island isn’t on Netflix. Robbie recommends The Office. [go back]