CSE331 Autumn 2011
Software Design and Implementation

Instructor: David Notkin


  • Krysta Yousoufian
  • Emily Harmell
Email all staffcse331-staff@cs

Office hours

  • See calendar
  • Notkin also by appointment and/or stop by CSE542 and take a chance
  • Most course information will be linked via the calendar
  • The calendar includes information on "how to subscribe"
  • You can also view separate lists of lectures, sections, and homeworks

Forumpiazza.com/class (if you didn't get an invitation, first sign up here)

Dropbox:  Submit assignments to the course dropbox

Anonymous feedback

  • Feedback will improve the course (at least in the future ☺) — we can fix many problems, but only if we know about them
  • Let us know about your concerns on piazza, by email, in office hours, or by Catalyst anonymous feedback (you can have it sent to Notkin only or to the entire CSE331 staff)
  • Results from the initial questionnaire (part of Assignment 0)

  • Discussion is encouraged!
  • We expect highly ethical behavior.
  • Representing someone else's work as your own is unacceptable.
  • Familiarize yourselves with the CSE, COE and UW policies on academic honesty—we will pursue cheating as described in these policies.
  • If you have a question about what is allowed, ask!

A few details

  • You are free to use conceptual material that you obtain from textbooks, the Internet, and other sources. For instance, Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein is an excellent resource for algorithms. If you use such material, give explicit credit clearly in your documentation.
  • Looking at other peoples' code or solutions is not permitted; consistent with this, you may allow only the course staff to access any location where you keep CSE 331 code.
  • You can, however, help other students with tool-related problems (such as using Eclipse or SVN), even if this results in incidental viewing of snippets of code.
  • It is permissible to discuss approaches to the assignments with other students, but the code itself is off-limits.
  • Apply the Gilligan's Island rule—if you watch mindless TV for ~30 minutes after a discussion with classmates, and you can still reproduce the materials from memory (no notes, no email, etc.), then you can consider it yours.
  • When you turn in assignments, list everyone with whom you've had substantive discussions (give credit where credit is due).
  • We will use technological and other means to detect cheating.

Fine print

  • It's not effective for us to try to define a list of all impermissible activities. This approach can tempt people to look for loopholes. Consider the point above: "Don't represent somebody else's work as your own." This includes things like using any substantive material or solutions from similar assignments this term or previous terms at UW or elsewhere, including anywhere on the Internet, transcribing solutions from any other source, etc.  Our policy is intended to convey the spirit of the law, fully understanding that the letter of the law may not cover everything that someone may think of.
Late Days

Each student is allowed four late days for assignments during the quarter.  Each late day allows you to turn in your assignment up to 24 hours after the due date.  Each late day is used entirely or not at all (that is, you can't take .03725643 or even 0.5 late days).  Late days can be combined.  Unless we announce otherwise, you can use a late day simply by sending an email request to the staff email list (see above) with your name and your UWNetID.

Grading policy

Subject to change —5% extra yet to be allocated

5% Staff discretion (including course participation)
5% A0
10% A1
10% A2
10% A3 (one grade/pair barring exceptional conditions)
15% A4
15% A5
12.5% Mid-term
12.5% Final

Each student in the class is graded independently of one another—for example, there is no limit on how many students can earn a 4.0 or a 2.0. Neither is there a pre-determined absolute percentage score that earns a 4.0 or a 2.0.

We set percentages like these after the quarter is over using resources such as the English descriptions in the Sample UW Grading Guidelines.

We also discuss each student individually asking questions like "If I were founding a startup, would I hire this student?" and "Did this student master the material?"

We will try to standardize grading policies across the staff, but if needed we will make adjustments.

Books and Useful Websites

Required: Cay S. Horstmann and Gary Cornell.  Core Java: Volume I, Fundamentals (8th Edition).  Prentice Hall (2007).  ISBN: 0-13-235476-4.

Strongly recommended: Joshua Bloch. Effective Java (2nd Edition).  Prentice Hall (2008).  ISBN: 0-32-135668-3.

Other books you would benefit from (now and most definitely over time)

  • Andrew Hunt and David Thomas. The Pragmatic Programmer: From Journeyman to Master
  • Steve McConnell. Code Complete
  • Andreas Zeller. When Programs Fail: A Guide to Systematic Debugging
  • Martin Fowler. Refactoring: Improving the Design of Existing Code
  • Cay Horstmann: Object-Oriented Design and Patterns
Useful Java websites
  • Oracle's main Java site 
  • Oracle's Java documentation site
  • Sun's 1.6 JDK site, including documentation of all APIs
  • Sun's Java tutorial site (mostly now for Java 7, but the early material especially should be fine for Java 6)
  • Java Language Specification