Readings
Readings
Barbara Liskov and John Guttag, Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Addison-Wesley, 2001.
Liskov’s book gives you motivation and explanation of why and how one designs the abstractions we will be covering in this course. The book takes a more informal approach but comes with very nice explanations and examples. Reading it will help you understand the course material and see it from a different perspective.
Peter Sestoft, Java Precisely, Second Edition, MIT Press, 2005.
Sestoft’s book gives you a very concise but accurate explanation of Java programming language. It covers many topics you may not have seen and elucidates those you have already used. Get into a habit of re-reading sections as we cover the related topics and use it as an initial refresher of what you know about Java as we start the semester.
Joshua Bloch, Effective Java, Second Edition, Addison-Wesley, 2008.
The readings from this book will help to improve your Java programming. This book describes the effective style of programming in Java, highlighting the techniques that use Java effectively. It is an invaluable reference for anyone programming in Java and the issues it addresses apply to programs written in other languages as well.
Outline
Below is a preliminary outline of weekly topics and reading assignments. The outline will be updated throughout the semester.
Week 1: Monday, May 5, 2014 - Thursday, May 8, 2014
-Topics
-Introduction to Course
-Review of Java
-Recipe
-Abstraction
-Abstraction Barrier and Interchangeable Parts
-Testing
-Debugging
-Procedural Abstraction
-Readings
-Recipe to translate an algebraic specification into Java
-Bloch - Item 44
-Liskov - Chapter 1: Introduction
-Liskov - Chapter 2: Review of Objects in Java
-Bloch - Item 47
-Bloch - Item 41
-Bloch - Items 8-11, 13-15, 38, 40, 45, 56
-Liskov - Chapter 10: Testing and Debugging
-Liskov - Chapter 3: Procedural Abstraction
Week 2: Monday, May 12, 2014 - Thursday, May 15, 2014
-Topics
-Factory method pattern
-Exceptions
-Procedural Abstraction
-Maps
-Data Abstraction
-Iterators
-Readings
-Liskov - Chapter 4: Exceptions
-Bloch - Items 1, 4, 5, 57-65
-Liskov - Chapter 5: Data Abstraction
-Bloch - Item 46
-Liskov - Chapter 6: Iteration Abstraction
Week 3: Monday, May 19, 2014 - Thursday, May 22, 2014
-Topics
-Abstraction function and rep invariant
-Binary Search Trees
-Total order
-Comparators
-Stress Testing
-Asymptotic notation
-Optimization
-hashCode
-Midterm Review
-Readings
-To Be Announced
-Optional Readings
-Duane Bailey. Data Structures in Java, for the Principled Programmer, 2nd Edition McGraw Hill 2003.
PDF available online at http://www.cs.williams.edu/javastructures/Welcome.html
Chapters 12 (Binary Trees) and 14 (Search Trees)
Note that implementations in book are mutable whereas our implementations of BST are immutable.
-T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, MIT Press and McGraw-Hill, 3rd edition edition, 2009.
Online access available through Northeastern library
Chapter 12 (Binary Search Trees), Chapter 3 (Growth of Functions)
Note that implementations in book are mutable whereas our implementations of BST are immutable.
Week 4: Monday, May 26, 2014 - Thursday, May 29, 2014
-Topics
-Midterm
-Red-Black Trees
-Refactoring
-Software Qualities
-Reliability Testing
-hashCode improvement
-Readings
-Chris Okasaki, “Red-black trees in a functional setting,” Journal of Functional Programming, 9(4), pages 474-477, July 1999.
-Bloch - Item 46
-Optional Readings
-T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, MIT Press and McGraw-Hill, 3rd edition edition, 2009.
Online access available through Northeastern library
Chapter 13 (Red-Black Trees)
Note that implementations in book are mutable whereas our implementations of RBT are immutable.
Week 5: Monday, June 2, 2014 - Thursday, June 5, 2014
-Topics
-Visitor Pattern
-Parameterized Types/Generics
-Code Reviews
-Polymorphic Abstractions
-Type Hierarchy
-Benchmarking
-Software Process
-Requirements
-Readings
-Bloch - Item 46
-Bloch - Items 23-29
-Liskov - Chapter 8: Polymorphic Abstractions
-Liskov - Chapter 7: Type Hierarchy
-Liskov - Chapter 9: Specifications
-Liskov - Chapter 11: Requirements Analysis
-Liskov - Chapter 12: Requirements Specifications
Week 6: Monday, June 9, 2014 - Thursday, June 12, 2014
-Topics
-Design
-Polymorphism
-Reuse
-Design Patterns
-Implementation
-Final Exam Review
-Readings
-Liskov - Chapter 13: Design
-Liskov - Chapter 14: Between Design and Implementation
-Liskov - Chapter 15: Design Patterns
Week 7: Monday, June 16, 2014 - Thursday, June 19, 2014
-Topics
-To Be Announced
-Final Exam
-Readings
-To Be Announced
Supplemental Readings
-The Java Tutorial contains a succinct discussion of static members and the relationship between classes and objects.
Last Updated on May 20, 2014 (Added Optional Readings for Weeks 3 & 4)