CSE331: Software Design and Implementation, Winter 2014

Course Info

Course Information and Policies

Lecture: Monday, Wednesday, Friday 10:30-11:20 CMU120
Section AA: Thursday 8:30-9:20 EEB003
Section AB: Thursday 9:30-10:20 EEB003
Section AC: Thursday 10:30-11:20 EEB105

All office hours will be held in the undergraduate labs in the basement of the Allen Center, room 006, except Dan's hours, which will be held in his office, room 574 of the Allen Center.

Office Hours:
  Dan Grossman, Allen Center 574, Wednesdays 9:00-10:00AM
  Brandon Dalesandro, Fridays 11:30AM-12:30PM
  Brian Griffith, Mondays 2:30-3:30PM
  Riley Klingler, Thursdays 3:00-4:00PM
  Alex Mariakakis, Tuesdays 1:00-2:00PM
  Uldarico Muico, Wednesdays 2:00-3:00PM
  Karthik Palaniappan, Thursdays 11:00AM-Noon

Contact Info

Contact Information

Course Email List (mandatory): You should receive email sent to the course mailing list regularly, roughly at least once a day. Any important announcements will be sent to this list.

Email sent to cse331-staff@cs.washington.edu (not @u...) will reach the instructor and all the TAs. For questions multiple staff members can answer, please use this email so that you get a quicker reply and the whole staff is aware of points of confusion.

Course staff:
  All staff: cse331-staff@cs.washington.edu (not @u...)
  Instructor: Dan Grossman, djg@cs.washington.edu (not @u...)
  TA: Brandon Dalesandro, brand0n@cs.washington.edu (not @u...)
  TA: Brian Griffith, briangri@cs.washington.edu (not @u...)
  TA: Riley Klingler, rklingl@cs.washington.edu (not @u...)
  TA: Alex Mariakakis, atm15@cs.washington.edu (not @u...)
  TA: Uldarico Muico, um@cs.washington.edu (not @u...)
  TA: Karthik Palaniappan, karth295@cs.washington.edu (not @u...)

Course Discussion Board (optional but encouraged)

Anonymous Feedback (goes only to the instructor)


Lecture Materials

  1. 1. Jan 6: Course Introduction   pptx   pdf1up   pdf6up
  2. 2. Jan 8,10: Reasoning About Code With Logic   pptx   pdf1up   pdf6up   related reading-notes
  3. 3. Jan 10,13: Reasoning About Loops   pptx   pdf1up   pdf6up   related reading-notes
  4. 4. Jan 15,17: Specifications   pptx   pdf1up   pdf6up
  5. X. Jan 20: University Holiday
  6. 5. Jan 22: ADTs   pptx   pdf1up   pdf6up   related handout
  7. 6. Jan 24: Representation Invariants   pptx   pdf1up   pdf6up   related handout
  8. 7. Jan 27: Abstraction Functions   pptx   pdf1up   pdf6up   related handout (same as previous lecture)
  9. 8. Jan 27,29,31: Testing   pptx   pdf1up   pdf6up   related handout
  10. 9. Jan 31: Module Design and General Style Guidelines   pptx   pdf1up   pdf6up
  11. 10. Feb 3,5: Identity, Equals, and HashCode   pptx   pdf1up   pdf6up
  12. 11. Feb 5,7: Exceptions and Assertions   pptx   pdf1up   pdf6up
  13. 12. Feb 10,14: Subtypes and Subclasses   pptx   pdf1up   pdf6up
  14. X. Feb 12: Midterm Exam
  15. 13. Feb 14,19,21: Generics   pptx   pdf1up   pdf6up
  16. X. Feb 17: University Holiday
  17. 14. Feb 24: Events, Listeners, and Callbacks   pptx   pdf1up   pdf6up
  18. 15. Feb 24,26: Debugging   pptx   pdf1up   pdf6up   related handout
  19. 16. Feb 26,28,Mar 3: Design Patterns, Part 1   pptx   pdf1up   pdf6up
  20. 17. Mar 3,5: Java Graphics and GUIs   pptx   pdf1up   pdf6up
         SimpleFrameMain.java   SimpleLayoutMain.java   SimplePaintMain.java   Face.java   FaceMain.java
  21. 18. Mar 5,7: GUI Event-Driven Programming   pptx   pdf1up   pdf6up
         ButtonDemo1.java   ButtonDemo2.java   ballsim (7 files)
  22. 19. Mar 7,10: Design Patterns, Part 2   pptx   pdf1up   pdf6up
  23. 20. Mar 10,12: System Integration and Software Process   pptx   pdf1up   pdf6up
  24. 21. Mar 14: Course Wrap-Up   pptx   pdf1up   pdf6up

Section Materials

  1. 1. Jan 9: Debugging and Code Reasoning   pptx   pdf1up   pdf6up
  2. 2. Jan 16: Developer Tools and You   pptx   pdf1up   pdf6up
  3. 3. Jan 23: HW4, ADTs, and more   pptx   pdf1up   pdf6up
  4. 4. Jan 30: Graphs and Testing   pptx   pdf1up   pdf6up
  5. 5. Feb 6: Midterm Review   pptx   pdf1up   pdf6up
  6. 6. Feb 13: Homework 6 and Interfaces   pptx   pdf1up   pdf6up
  7. 7. Feb 20: Dijkstra's Algorithm   pptx   pdf1up   pdf6up
  8. 8. Feb 27: Model-View-Controller   pptx   pdf1up   pdf6up
  9. 9. Mar 6: Design Patterns   pptx   pdf1up   pdf6up
  10. 10. Mar 13: Final Review   pptx   pdf1up   pdf6up

Homework Assignments

We will use a Catalyst dropbox only for early assignments in the course. After that, turn in will be via version-control.

Catalyst Dropbox

Late-Day Request Form (required to use late days starting with Homework 2)

Beginning-of-course questionnaire: on-line survey worth 0 points, "due" Thursday Janunary 9


Reading Assignments and Quizzes

For each reading, there is a short quiz due as indicated below. Quizzes are on Catalyst and are available only to students registered in the course. Abbreviations:
PP = The Pragmatic Programmer
EJ = Effective Java, 2nd Edition


Midterm Exam: Wednesday February 12, in class   unsolved   solved

Covers material through Lecture 10, Reading Quizzes Batch 3, and Section 4. Old exams may cover different materials and are no guarantee of style/format/difficulty etc. of our exam. See email sent to the class for more information.

Old midterms:
   Fall 2013   unsolved   solved
   Spring 2013   unsolved   solved
   Winter 2013   unsolved   solved
   Fall 2012   unsolved   solved
   Spring 2012   unsolved   solved
   Winter 2012   unsolved   solved

Final Exam: Monday March 17, 8:30-10:20AM   unsolved   solved

While material in all lectures (1 through 20), sections, readings, and homeworks is “fair game,” the questions will very heavily emphasize the material that was not covered on the midterm. There will not be time on the exam to test all topics. Old exams may cover different materials and are no guarantee of style/format/difficulty etc. of our exam. In particular, we did not cover usability, UI prototyping, or static nullness checking, so exam questions about them are not relevant.

Old finals:
   Fall 2013   unsolved   solved
   Spring 2013   unsolved   solved
   Winter 2013   unsolved   solved
   Fall 2012   unsolved   solved
   Spring 2012   unsolved   solved
   Winter 2012   unsolved   solved



CSE331 handouts about tools:

CSE331 handouts about concepts:

External links of potential use:

Acknowledgments: This course offering relies heavily on previous versions of the course, particularly the infrastructure and content developed by Michael D. Ernst and adapted by other instructors, particularly Hal Perkins and David Notkin, as well as many excellent previous course-staff members.

Valid CSS! Valid XHTML 1.1