At the moment this is the standard syllabus for CSE333. It has not been updated yet to reflect changes that will need to be made for 20sp. However, the general content of the course will be the same to the extent possible, and most of the information in here will still apply.
Logistics and Contact Information: See the main course web site www.cs.washington.edu/333/. Look there for information about the course including meeting times, staff, office hours, communications, etc.
[ prereqs | topics | assignments | exercises | exams | grades| texts| policies ]
Several
practices embody courage. One is the commandment to always
design and code for today and not for tomorrow. This is an
effort to avoid getting bogged down in design and requiring a
lot of effort to implement anything else. Courage enables
developers to feel comfortable with refactoring their code
when necessary. This means reviewing the existing system
and modifying it so that future changes can be implemented
more easily. Another example of courage is knowing when to
throw code away: courage to remove source code that is
obsolete, no matter how much effort was used to create that
source code. Also, courage means persistence: A programmer
might be stuck on a complex problem for an entire day, then
solve the problem quickly the next day, if only they are
persistent.
(Source:
Wikipedia, Extreme Programming)
Assignments
This course is designed to give you substantial experience with
programming. There will be four major programming
assignments during the quarter; the assignments are designed to
build on top of each other, so it is in your interest to make sure
that earlier assignments are rock-solid.
All of our assignments assume you will be programming
within an Allen School Linux environment. There are three ways to do this:
attu.cs.washington.edu cycle servers;
Regardless of where you develop your assignments, we will test and grade them on the CSE lab machines or attu, so you must ensure that your code works properly there.
Great programmers write great code. People become great programmers writing lots of code and learning from the experience. We will be assigning a mandatory programming exercise with most lectures, due before the next lecture. These will be relatively short and simple, but they will reinforce the material from the lecture. We will grade them, but the grading will be course-grained, roughly as follows:
Because of the unusual situation during this quarter, there will not be a traditional midterm or final exam. We are hoping to have 3 or 4 "mini-exams" or quizzes during the quarter to provide an opportunity to review and solidify course material, but those plans are still tentative.
The initial plan for 20sp is the following. We will adjust this once we determine whether it will be feasible to administer mini-exams (quizzes) and we reserve the right to make additional adjustments to reflect other changes as the quarter evolves:
There are no strictly required texts for this courses. Most people will find it useful to have both a C and a C++ reference; suggestions are given below. We strongly recommend that you have a copy of the C++ Primer as C++ is a big, complex language and it is hard to understand how it fits together from google searches and stack overflow snippets and folklore.
Many of these books are freely available to UW students through the UW Library's subscription to Safari Books Online.
Policies
(Many of these policies are taken verbatim from other CSE courses.)
Late Policy:The standard CSE 333 late policy is as follows: Assignments are expected to be done on time, however we realize that occasionally a bit of slack is needed for unexpected problems or to get rid of that "last" bug. For the entire quarter, you may have four free "late days". You are strongly advised to save them for emergencies. You may not use more than two for the same assignment, and on group projects (if we have any) you may only use late days if all members of the group have them available, and all members of the group will be charged for each late day used. They must be used in 24-hour (integer) chunks. If you are not finished with an assignment and have no more remaining late days you should turn in your best effort for partial credit either on time or after using any available late day(s). This policy may not be the same as in other classes. You are responsible for understanding it if you choose to submit late work.
For exercises, we will not accept any late; you must turn them in on time.
For Spring Quarter 2020: Given the unusual circumstances this quarter, we will be flexible when needed about deadlines. The goal is to stay on schedule as best we can, while acknowledging that the current situation may well require some adjustments. We will try to be clear about any changes in advance so everyone can plan accordingly. Please contact the course staff in advance if you find it will be difficult to meet deadlines for reasons beyond your control.
Reasonableness: No set of rules can apply perfectly in every setting. We will make reasonable exceptions, and in return, we expect you to be reasonable as well.
Cheating vs. Collaboration: Please see the separate discussion of Academic Integrity. You are expected to read and understand every word in that document. Ask first if you have any questions.
Collaboration is a very good thing. On the other hand, cheating is considered a very serious offense and is vigorously prosecuted. Vigorous prosecution requires that you be advised of the cheating policy of the course before the offending act.
For this course, the policy is simple: don't cheat. You know it when you're doing it. We'll recognize it when you do it. As an easy example, sharing assignment solution code with each other is cheating, as is copying homework solutions from any source. As another easy example, relying heavily on some resource (e.g., some example code you found on the Web) without attributing it in your turnin is cheating.
That said, collaborating is, for many people, an effective way to learn. Learning isn't cheating. Helping each other write programs that are not assignments or exercises isn't cheating. Misrepresenting that you've learned something, or done the work that implies you've learned something, almost certainly is.