Course Information
Meetings:
Lecture | MWF | 9:30 | GUG | 220 |
Section AA | Thu | 8:30 | EEB | 003 |
Section AB | Thu | 9:30 | MGH | 287 |
Section AC | Thu | 10:30 | MGH | 251 |
Section AD | Thu | 11:30 | EEB | 037 |
Section AE | Thu | 12:30 | EEB | 037 |
Contact:
- Message Board
- For questions, clarifications, and discussions. You must use your UW login to access. Most online activity will happen on this board. Enrolled students should automatically have access.
- Course Staff:
cse331-staff [at] cs.washington.edu
- For special circumstances. Please use the message board whenever possible.
- Mailing List:
cse331a_sp18 [at] uw.edu
- Low traffic, but mandatory. Critical reminders and emergency change of plans will be announced to this list. Enrolled students should be subscribed automatically.
Office Hours:
Mon | 11:00 | to | 12:00 | CSE 021 | Weifan Jiang |
Mon | 5:00 | to | 6:30 | CSE 007 | Cody Kesting |
Tue | 11:00 | to | 12:00 | CSE 220 | Tim Chirananthavat |
Tue | 2:30 | to | 3:30 | CSE 021 | Alexey Beall |
Wed | 10:30 | to | 11:30 | CSE 546 | Zach Tatlock |
Wed | 3:30 | to | 4:30 | CSE 021 | Hongtao Huang |
Thu | 10:30 | to | 11:30 | CSE 006 | Jake Sippy |
Thu | 3:30 | to | 4:30 | CSE 007 | Chen (Jason) Qiu |
Fri | 10:30 | to | 11:45 | CSE 003 | Leah Perlmutter |
Fri | 3:30 | to | 4:30 | CSE 021 | Zhu (Ruby) Li |
Fri | 4:30 | to | 5:30 | CSE 021 | Yifan (Vanadis) Xu |
Administrative:
Course Materials
Assignments
Fri | Mar | 30 | 5:00 PM | Homework 0 |
Wed | Apr | 4 | 11:00 PM | Homework 1 |
Tue | Apr | 10 | 11:00 PM | Homework 2 |
Fri | Apr | 13 | 11:00 PM | Homework 3 |
Fri | Apr | 20 | 11:00 PM | Homework 4 |
Fri | Apr | 27 | 11:00 PM | Homework 5 |
Wed | May | 9 | 11:00 PM | Homework 6 |
Wed | May | 16 | 11:00 PM | Homework 7 |
Wed | May | 23 | 11:00 PM | Homework 8 |
Fri | Jun | 1 | 11:00 PM | Homework 9 |
Reading Schedule and Quizzes
All Quizzes are due at 11pm on the dates below.
Mar | 31 | Get books: |
Pragmatic Programmer (PP) | ||
Effective Java (3rd edition EJ3 or 2nd edition EJ2) | ||
Apr | 10 | PP: Preface, 1, 2, 5, 21, 31, 35, 44 |
(PP titles: The Cat Ate My Source Code, Software Entropy, Your Knowledge Portfolio, Design by Contract, Programming by Coincidence, Evil Wizards, It’s all writing) | ||
Quiz1 | ||
Apr | 17 | EJ3: 17, 50, 56 |
(EJ2: 15, 39, 44) | ||
(EJ titles: Minimize mutability, Make defensive copies when needed, Write doc comments for all exposed API elements) | ||
Quiz2 | ||
Apr | 24 | PP: 4, 7, 8, 26, 33, 34, 43 |
(PP titles: Good-Enough Software, The Evils of Duplication, Orthogonality, Decoupling and the Law of Demeter, Refactoring, Code That’s Easy to Test, Ruthless Testing) | ||
EJ3: 12, 15, 16, 17, 51, 52, 57, 58, 62, 68 | ||
(EJ2: 10, 13, 14, 15, 40, 41, 45, 46, 50, 56) | ||
(EJ titles: Always override toString, Minimize the accessibility of classes and members, In public classes use accessor methods not public fields, Minimize Mutability, Design method signatures carefully, Use overloading judiciously, Minimize the scope of local variables, Prefer for-each loops to traditional for loops, , Avoid strings where other types are more appropriate, Adhere to generally accepted naming conventions) | ||
Quiz3 | ||
May | 1 | PP 22 - 24 |
(PP titles: Dead Programs Tell No Lies, Assertive Programming, When to Use Exceptions) | ||
EJ3: 10, 11, 13, 14, 49, 69 - 74, 77 | ||
(EJ2: 8, 9, 11, 12, 38, 57 - 62, 65) | ||
(EJ titles: Obey the general contract when overriding equals, Always override hashCode when you override equals, Override clone judiciously, Consider implementing Comparable, Check parameters for validity, all items in the “Exceptions” section except for “Include failure-capture information in detail messages” and “Strive for failure atomicity”) | ||
Quiz4 | ||
May | 8 | EJ3: 18 - 20, 22, 23, 40, 64 |
(EJ2: 16 - 20, 36, 52) | ||
(EJ titles: Favor composition over inheritance, Design and document for inheritance or else prohibit it, Prefer interfaces to abstract classes, Use interfaces only to define types, Prefer class hierachies to tagged classes, Consistently use the Override annotation, Refer to objects by their interfaces) | ||
Quiz5 | ||
May | 15 | EJ3: 26 - 31 (EJ2: 23 - 28) |
(EJ titles: all items in the “Generics” section except “Consider typesafe heterogeneous containers”) | ||
Quiz6 | ||
May | 22 | PP: 18, 27, 29 |
(PP titles: Debugging, Metaprogramming, It’s Just a View) | ||
Quiz7 | ||
May | 29 | EJ3: 1-4, 6, 7 (EJ2: 1-6) |
(EJ titles: all items in the “Creating and Destroying Objects” except for “Avoid finalizers”) |
Exams
Below are some links to past exams. The overlap between previous offerings of the course and this quarter isn’t always exact, so you should not worry too much about questions on topics we haven’t covered. In some quarters, the second exam was a full-length final exam, in others it was a second exam intended to be the same difficulty as the midterm.
Suggestion: Only tackle these practice exams after you’ve complete independent studying. Then use them as a check for how well you are prepared by first working the problems using blank exams and then checking your answers against the sample solutions.
Midterm: Monday, April 30, 9:30 AM (in class)
Final: Wed, June 6, 8:30 AM
Resources
CSE 331 Tools Docs
CSE 331 Concepts Docs
Additional Resources
- Java 8 API
- CSE GitLab
- Git Book
- Java Tutorial
- Google Java Style Guide
- Sun Java Conventions (1997, but still good!)
- JDK Download (get Java 8)
- Eclipse Download (get Eclipse for Java Developers)