CSE331: Software Design and Implementation, Spring 2015

Course Info

Course Information and Policies

Lecture: Monday, Wednesday, Friday 10:30-11:20 MUE153
Section AA: Thursday 8:30-9:30 LOW206
Section AB: Thursday 9:30-10:20 LOW206
Section AC: Thursday 10:30-11:20 LOW202

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 [beginning Thursday April 2]:
  Vinod Rathnam, Mondays 11:30-12:30
  Uldarico Muico, Mondays 3:30-4:30
  Kevin Quinn, Tuesdays 12:30-1:30
  Christopher Chen, Wednesdays 2:30-3:30
  Naruto Iwasaki, Thursdays 4:00-5:00
  Dan Grossman, Allen Center 574, Fridays 12:30-1:30

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 (preferred): cse331-staff@cs.washington.edu (not @u...)
  Instructor: Dan Grossman, djg@cs.washington.edu (not @u...)
  TA: Christopher Chen, chrisc94@cs.washington.edu (not @u...)
  TA: Naruto Iwasaki, niwemail@cs.washington.edu (not @u...)
  TA: Uldarico Muico, um@cs.washington.edu (not @u...)
  TA: Vinod Rathnam, vinodr@cs.washington.edu (not @u...)
  TA: Kevin Quinn, kchq@cs.washington.edu (not @u...)

For Doodles for talk-to-the-professor sessions, see emails sent to the course mailing list

Course Discussion Board (optional but encouraged)

Anonymous Feedback (goes only to the instructor)

Lecture

Lecture Materials

Material in the future naturally subject to change in terms of coverage or schedule

  1. 1. Mar 30: Course Introduction   pptx   pdf1up   pdf6up
  2. 2. Apr 1,3: Reasoning About Code With Logic   pptx   pdf1up   pdf6up   related reading-notes
  3. 3. Apr 3,6: Reasoning About Loops   pptx   pdf1up   pdf6up   related reading-notes
  4. 4. Apr 8,10,13: Specifications   pptx   pdf1up   pdf6up
  5. 5. Apr 13,15: ADTs   pptx   pdf1up   pdf6up   related handout
  6. 6. Apr 15,17: Representation Invariants   pptx   pdf1up   pdf6up   related handout
  7. 7. Apr 17,20: Abstraction Functions   pptx   pdf1up   pdf6up   related handout (same as previous lecture)
  8. 8. Apr 20,22: Testing   pptx   pdf1up   pdf6up   related handout
  9. 9. Apr 24,27: Identity, Equals, and HashCode   pptx   pdf1up   pdf6up
  10. 10. Apr 29,May 1: Exceptions and Assertions   pptx   pdf1up   pdf6up
  11. 11. May 1,7: Module Design and General Style Guidelines   pptx   pdf1up   pdf6up
  12. X. May 4: TAs lead Midterm Review in Class as “Section 6” (slides in Section section below)
  13. X. May 6: Midterm
  14. 12. May 7,8,11: Subtypes and Subclasses   pptx   pdf1up   pdf6up
  15. 13. May 11,13,15: Generics
    slides used in course:   pptx   pdf1up   pdf6up
    slides correcting an error about lower-bounded generics:   pptx   pdf1up   pdf6up
  16. 14. May 15,18: Debugging   pptx   pdf1up   pdf6up
  17. 15. May 18,20: Events, Listeners, and Callbacks   pptx   pdf1up   pdf6up
  18. 16. May 20,22: Java Graphics and GUIs   pptx   pdf1up   pdf6up
         SimpleFrameMain.java   SimpleLayoutMain.java   SimplePaintMain.java   Face.java   FaceMain.java
  19. 17. May 22,27: GUI Event-Driven Programming   pptx   pdf1up   pdf6up
         ButtonDemo1.java   ButtonDemo2.java   ballsim (7 files)
  20. 18. May 27,29: Design Patterns, Part 1   pptx   pdf1up   pdf6up
  21. 19. Jun 1: Design Patterns, Part 2   pptx   pdf1up   pdf6up
  22. 20. Jun 3,5: Systems Integration   pptx   pdf1up   pdf6up
  23. 21. Jun 5: Course Victory Lap   pptx   pdf1up   pdf6up
Section

Section Materials

  1. 1. Apr 2: Code Reasoning + Version Control + Eclipse   pptx   pdf1up   pdf6up
  2. 2. Apr 9: Homework 3 Setup   pptx   pdf1up   pdf6up
  3. 3. Apr 16: Homework 4, ADTs, and more   pptx   pdf1up   pdf6up
  4. 4. Apr 23: Homework 5, Graphs, and Testing   pptx   pdf1up   pdf6up
  5. 5. Apr 30: Homework 6 and Interfaces   pptx   pdf1up   pdf6up
  6. 6. Midterm Review (held in lecture slot/room on May 4)   pptx   pdf1up
  7. X. May 7: Section slots/rooms used to continue lecture material
  8. 7. May 14: Homework 7 and Dijkstra's Algorithm   pptx   pdf1up   pdf6up
  9. 8. May 21: Model-View-Controller   pptx   pdf1up   pdf6up
  10. 9. May 28: Design Patterns   pptx   pdf1up   pdf6up
  11. 10. June 4: Final-Exam Review   pptx   pdf1up   pdf6up
Homework

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

Beginning-of-course questionnaire: on-line survey worth 0 points, “due” Thursday April 2

Late-Day Request Form (required to use late days)

Readings

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

Exams

Midterm Exam: Wednesday May 6, 2015, in class   unsolved   solved

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

Old midterms:
   Winter 2015   unsolved   solved
   Fall 2014   unsolved   solved
   Spring 2014   unsolved   solved
   Winter 2014   unsolved   solved
   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 June 8, 2015, 8:30AM-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:
   Winter 2015   unsolved   solved
   Fall 2014   unsolved   solved
   Spring 2014   unsolved   solved
   Winter 2014   unsolved   solved
   Fall 2013   unsolved   solved
   Spring 2013   unsolved   solved
   Winter 2013   unsolved   solved
   Fall 2012   unsolved   solved
   Spring 2012   unsolved   solved
   Winter 2012   unsolved   solved

Resources

Resources

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