Syllabus
Table of contents
Description
Fundamental algorithms and data structures for implementation. Techniques for solving problems by programming. Linked lists, stacks, queues, directed graphs. Trees: representations, traversals. Searching (hashing, binary search trees, multiway trees). Garbage collection, memory management. Internal and external sorting. Intended for non-majors. Not open for credit to students who have completed CSE 332
Prerequisite: CSE 143.
Course Tools and Components
Tools
We use GitLab to distribute starter code for programming homeworks; this is also how you will submit your solution. For this reason, we recommend getting familiar with the basic git workflow, such as pulling, committing, and pushing changes. You can find short articles online describing these operations, but if you prefer a book we recommend this one.
We use Gradescope for grading. Your exams will be uploaded to Gradescope on your behalf, and you are reponsible for submitting your programming homeworks and QuickCheck (described below). Gradescope is where you will receive your grades and any optional feedback from course staff.
In lecture, we use PollEverywhere for in-class peer-instruction questions, in which you solve a question related to lecture content, discuss with your peers, and vote on the answer. This is designed to give you a chance to check your understanding of the material by applying it on-the-spot, as well as an opportunity to interact with your classmates. To particpate in polls, first register your UWNetID on the Poll Everywhere website (more information at IT Connect). Then, in lecture, you may vote using either of the following options:
- Use the Poll Everywhere mobile app.
- Vote in a browser at https://pollev.com/uwcse373.
Lastly, we use Piazza for course discussion and announcements. If you need to send the course staff a private message, we recommend using email instead of Piazza’s private messages. This makes sure that everyone is notified.
Components
Thanks to UW’s COVID-19 closure, we rebalanced the course components during week 10 to the following weights:
Category | Weight |
---|---|
Programming Homework | 45% |
Midterm | 25% |
Final-Review Assignment | 8% |
Lecture (“80% is 100%”) | 10% |
QuickChecks: completion (“80% is 100%”) | 6% |
QuickChecks: correctness | 6% |
Total | 100% |
Your grade in the class will be calculated using the following components:
Lecture includes reading quizzes completed before class and in-class polls via PollEverywhere. For this component, you will receive credit for completion, not correctness.
QuickChecks are weekly worksheets that are designed to check for any gaps in your understanding and to prepare you for exam-style questions. We will go over the QC in section every week. Half of the QC’s points are based on completion, not correctness; the remainder will be based on the answers themselves. It is important to note that a single QC’s correctness constitutes only ~0.5% of your final grade for the quarter; we chose this weighting to motivate you to prepare for section and exams, not to cause weekly anxiety about “losing points”.
For both Lecture and QuickChecks: completion, we offer a “80% is 100%” policy, meaning that you will receive full credit for these two categories as long as you participate in 80% of each of them. You will receive full participation points if you submit >=17.5 of the 22 reading quizzes, and >=32 of the 40 polls, and >=7 of the 8 QCs.
Policies
Late Policy: Programming Homework
Homeworks are due on Gradescope before 9pm. Late submissions for programming homeworks are subject to the following penalties:
Lateness | Penalty |
---|---|
1-12 hours | -2.5% |
13-24 hours | -5% |
25-36 hours | -7.5% |
37-48 hours | -10% |
49-72 hours | -20% |
73-96 hours | -30% |
97+ hours | Not accepted for grading |
There is a small 10-minute grace period for last-minute submission issues. Any lateness afterwards will be calculated by rounding up your lateness to the nearest whole hour. The autograder will automatically compute deductions, so the raw autograder score you see on Gradescope will be recorded for grading.
Late Policy: QuickChecks
QuickChecks are due on Gradescope before 8am on Thursdays. Late work is generally not accepted for QuickChecks.
Late Policy: Reading Quizzes
Reading quizzes are due on Gradescope before 3pm on lecture days. Late work is generally not accepted for reading quizzes.
Note on Extenuating Circumstances
If you have extenuating circumstances, please contact the instructor as soon as possible to discuss accomodations. See the section below on Extenuating Circumstances.
Collaboration Policy
Learning these ideas is challenging. We encourage you to discuss course activities with your friends and classmates as you are working on them, because you will definitely learn more in this class if you work with others than if you do not. 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.
Learning collaboratively is different from sharing answers. You shouldn’t be showing your code to other students except to someone who has already submitted the assignment and who is helping you finish. If you are helping another student, don’t just tell them the answer; they will learn very little and run into trouble on exams. Instead, try to guide them toward discovering the solution on their own.
A good rule-of-thumb for distinguishing between collaboration and sharing answers is this: Can I attempt an immaterially-different question (eg, sorting in ascending order instead of descending order), by myself, without my collaborator? If the answer is “yes”, then you learned from your collaboration; that’s great! Please do more of it! However, if the answer is “no”, then you were sharing answers.
Cheating Policy
Sharing answers is one form of cheating, but all forms of cheating are disallowed in thise course. You should not claim to be responsible for work that is not yours. For clarity, examples of specific activities are listed below.
Permitted
- Discussion of approaches for solving a problem.
- Giving away or receiving significant conceptual ideas towards a problem solution; such help should be cited as comments in your code. For the sake of others’ learning experience we ask that you try not to give away anything juicy, and instead try to lead people to such solutions.
- Discussion of specific syntax issues and bugs in your code.
- Using small snippets of code that you find online for solving tiny problems. For example, searching for “uppercase string java” may lead you to some sample code that you copy and paste into your solution. Such usages should be cited as comments!
Permitted with Extreme Caution
- Looking at someone else’s code to understand a particular idea or part of a programming homework. This is strongly discouraged due to the danger of plagiarism, but not absolutely forbidden.
- Working on assignments in close collaboration with another person or group of people. Your work should not substantially resemble anyone else’s!
Forbidden
- Looking at someone else’s code to understand how it was implemented before you’ve submitted your own; this includes the situation where you’re trying to help someone debug.
- Typing or dictating code into someone else’s computer, regardless of whether you wrote that code or received it from elsewhere.
- Possessing solutions that you did not write yourself, before their deadline.
- Distributing solutions at any time, even after the course is over. This includes both solutions that you wrote and any solutions you may have obtained. “Distribution” includes uploading them to public websites (eg, a GitHub repo), group repositories (eg, your club’s/frat’s “answer bank”), or private chats (eg, WeChat group with a few friends).
- Working in lock-step with other students. Your workflow should not involve a group of people identifying, tackling, and effectively identically solving a sequence of subproblems.
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 instructor an email describing the situation and we will be happy to clarify it for you.
Receiving Help from Staff
Piazza is our online discussion forum. For most questions about the course or materials, Piazza is the right place to ask: the course staff read it regularly, so you will get a quick answer. We strongly recommend posting a group message (either anonymous or attributed) so that other students benefit by seeing the question and its answer. However, if you need to send the course staff a private message, we recommend using email instead of Piazza’s private messages.
The use of “Piazza Careers” is not required and you do not need to put any personal information in the website.
To meet with us, the best way is to come to drop-in times (sometimes called “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.
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.
Accommodations
Extenuating Circumstances
We recognize that our students come from varied backgrounds and can have widely-varying circumstances. If you have any unforeseen or extenuating circumstance that arise during the course, please do not hesitate to contact the instructor to discuss your situation. The sooner we are made aware, the more easily these situations can be resolved. Extenuating circumstances include work-school balance, familial responsibilities, religious observations, military duties, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class.
Disabilities
Your experience in this class is important to me. If you have already established accommodations with Disability Resources for Students (DRS), please communicate your approved accommodations to me 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 instructor(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