On this page:
1 Required readings
2 Supplemental readings
3 Reading in the Liskov text
Version: 5.2.1

Readings for CS 3500

1 Required readings

One way to translate an algebraic specification into Java.

New reading assigned on October 26, 2012:

Read The Story of Mel, a Real Programmer, by Ed Nather.

Read Liskov and Guttag chapter 5 (skipping discussion of the clone method): focuses on data abstraction

Next week we will talk about red-black trees. Read Chris Okasaki. Red-black trees in a functional setting.

Essential concepts in Java

Sestoft chapter 1: compilation, loading, and execution

Sestoft chapter 3: Java naming conventions

Sestoft chapter 4: comments and program layout

Sestoft chapter 6: variables, parameters, fields, and scope

Sestoft chapter 9: classes

Sestoft chapter 10: classes and objects in the computer

Sestoft chapter 11: expressions (may omit sections 11.1 through 11.4 and 11.6)

Sestoft chapter 5: types

Sestoft chapter 21: generic types and methods

The following sections of Liskov and Guttag book are relevant for the topics for the midterm:

Liskov and Guttag chapter 1: introduction

Liskov and Guttag sections 2.0 through 2.5, 2.6.1, 2.7: Java

Liskov and Guttag sections 5.0 through 5.4 (skipping discussion of the clone method): data abstraction

Liskov and Guttag sections 6.0 through 6.4, and sections 6.7 and 6.8: iterators

Liskov and Guttag section 7.6: abstract classes

Additional readings in Sestoft’s book:

Sestoft chapter 13: interfaces

Sestoft chapter 22: generic collections and maps

2 Supplemental readings

The Java Tutorial contains a succinct discussion of static members and the relationship between classes and objects.

Mark Grand’s summary of the Abstract Factory Pattern.

3 Reading in the Liskov text

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 a very nice explanation and examples. Reading it will help you understand the course material and see iit from a different perspective.

We will update weekly which chapters are relevannnt to each week’s topics.

For the first week, review what you have learned about Java, and make notes if you see something that is new to you. Ask questions about this in the next class.

To see a discussion of why specification is important and see another way of defining specification read Chapter 5 of Liskov, especially section 5.5.

Week 1: 9/7
         Read these chapters to review Java programming language
        Review of Java; Introduction (Ch. 1 Liskov)
        Understanding Objects in Java (Ch. 2 Liskov)
  

Week 2: 9/11, 14
         These chapters give you another view of Procedual Abstraction
        Procedural Abstraction (Ch. 3 Liskov)
        Exceptions (Ch. 4 Liskov)
  

Week 3: 9/18, 21
        Data Abstractions (Specification and Implementation) (Ch. 5 Liskov)
        Data Abstractions (Abstraction Function, Representation Invariant, Side Effects) (Ch. 5 Liskov)
  

Week 4: 9/25, 28
        Data Abstractions (Reasoning, Design Issues, Locality and Modifiability) (Ch. 5 Liskov)
        Testing: unit tests, black box testing
  

Week 5: 10/2, 5
        Iteration Abstraction (Ch. 6 Liskov)
        Functional Iterators; Java for-each loop; Java 8 proposal
  

Week 6: 10/9, 12
        Visitors
        Type Hierarchy: overview, abstract classes, interfaces (Ch. 7 Liskov)
  

Week 7: 10/16, 19
        Type Hierarchy: multiple implementations, subtyes, equality, substitution principle (Ch. 7 Liskov)
        Polymorphic Abstractions (Ch. 8 Liskov)
  

Week 8: 10/23, 16
        Parametric Polymorphism - Java generics
        Parametric procedures: covariance, contravariance
  

Week 9: 10/30, 11/2
        Specifications (Ch. 9 Liskov)
        Testing and Debugging (Black-Box, Glass-Box) (Ch. 10 Liskov)
  

Week 10: 11/6, 9
        Testing and Debugging - Tools for Testing; Debugging (Ch. 10 Liskov)
        Design Patterns (Ch. 15 Liskov)
  

Week 11: 11/13, 16
        Design Patterns - additional
        Algorithms 1
  

Week 12: 11/20
        User Algorithms 2
        User Algorithms 3
  

Week 13: 11/27, 30
        User Algorithms 4
        User Algorithms 5
  

Week 14: 12/4
        Summary