Correlations

Java: How to Program 5th Edition, © 2003

Harvey M. Deitel and Paul J. Deitel

Correlated with AP® Computer Science A, November 2003

ST = Student textbook pages

Computer Science A

  1. Object-Oriented Program Design
    The overall goal for designing a piece of software (a computer program) is to correctly solve the given problem. At the same time, this goal should encompass specifying and designing a program that is understandable, can be adapted to changing circumstances, and has the potential to be reused in whole or in part. The design process needs to be based on a thorough understanding of the problem to be solved.
    1. Program design
      1. Read and understand a purpose, and goals.
        ST: 21, 67–69, 108–112
      2. Apply data abstraction and encapsulation.
        ST: 20, 342–350, 387–389
      3. Read and understand class specifications and relationships among the classes ("is-a," "has-a" relationships).
        ST: 108–112, 156–157, 401–403, 404, 405, 439–440
      4. Understand and implement a given class hierarchy.
        ST: 401–402, 403, 412–414, 423, 427–428, 446
      5. Identify reusable components from existing code using classes and class libraries.
        ST: 217–218, 228–230, 386–387, 401–402, 432–433
    2. Class design
      1. Design and implement a class.
        ST: 21–24, 154–157, 344–350, 360, 405–423
      2. Design an interface.
        ST: 344, 439, 467–472, 601–604
      3. Choose appropriate data representation and algorithms.
        ST: 121, 132–133, 154–157, 258–259, 388, 1049
      4. Apply functional decomposition.
        ST: 201, 260, 343
      5. Extend a given class using inheritance.
        ST: 91, 345, 401–403, 412–414, 424–427, 432–433, 456–457

  2. Program Implementation
    The overall goals of program implementation parallel those of program design. Classes that fill common needs should be built so that they can be reused easily in other programs. Object-oriented design is an important part of program implementation.
    1. Implementation techniques
      1. Methodology
        1. Object-based development
          ST: 20–21, 67–69, 108–112, 260–262, 342–343
        2. Top-down development
          ST: 136–137, 144–148
        3. Encapsulation and information hiding
          ST: 342–343, 346, 360–364, 387–389, 404
        4. Procedural abstraction
          ST: 218–219, 343
    2. Programming constructs
      1. Primitive types vs. objects
        ST: 104–105, 152–153, 280, 293, 485
      2. Declaration
        1. Constant declarations
          ST: 187, 239, 286–287, 377, 472
        2. Variable declarations
          ST: 49, 103, 121, 242–243, 282
        3. Class declarations
          ST: 35–36, 48, 91, 344–350
        4. Interface declarations
          ST: 234–237, 467–468, 472
        5. Method declarations
          ST: 37, 93, 221–225, 242–243, 293–294
        6. Parameter declarations
          ST: 93, 224, 227, 242–243, 293–294
      3. Console output (System.out.print/println)
        ST: 37, 40–41, 50
      4. Control
        1. Methods
          ST: 217–228, 243, 247–253, 258, 293–294
        2. Sequential
          ST: 121–122, 120–124, 200
        3. Conditional
          ST: 123–130, 183–188, 258
        4. Iteration
          ST: 123, 130–131, 169–182, 188–192, 258–260
        5. Recursion
          ST: 250–258, 258–260, 332–333
    3. Java library classes (included in the A level AP® Java Subset)
      ST: 9–10, 17, 44, 49, 217, 219–220, 228–229, 345, 1147, 1154

  3. Program Analysis
    The analysis of programs includes examining and testing programs to determine whether they correctly meet their specifications. It also includes the analysis of programs or algorithms in order to understand their time and space requirements when applied to different data sets.
    1. Testing
      1. Test classes and libraries in isolation
        ST: 495
      2. Identify boundary cases and generate appropriate test data
        ST: 282
      3. Perform integration testing
        ST: 17
    2. Debugging
      1. Categorize errors: compile-time, run-time, logic
        ST: 16, 17, 34, 131, 172
      2. Identify and correct errors
        ST: 17
      3. Techniques: use a debugger, add extra output statements, hand-trace code
        ST: XXVIII
    3. Understand and modify existing code
      ST: 563
    4. Extend existing code using inheritance
      ST: 91, 345, 401–403, 412–414, 424–427, 432–433, 456–457
    5. Understand error handling
      1. Understand runtime exceptions
        ST: 293, 618, 752–756, 760–762, 772–773, 783
    6. Reason about programs
      1. Pre- and post-conditions
        ST: N/A
      2. Assertions
        ST: N/A
    7. Analysis of algorithms
      NOTE: pages 258 and 1154 defer to other courses for deeper discussion of complexity theory (comparisons of run times), so it seems the author admits omission of this topic.
      1. Informal comparisons of running times
        ST: 258, 1154
      2. Exact calculation of statement execution counts
        ST: Covered in chapter exercises; chapters 4, 5, 6, 7
    8. Numerical representations and limits
      1. Representations of numbers in different bases
        ST: 1311–1319
      2. Limitations of finite representations (e.g., integer bounds, imprecision of floating-point representations, and roundoff error)
        ST: 100, 143, 144, 153, 388

  4. Standard Data Structures
    Data structures are used to represent information within a program. Abstraction is an important theme in the development and application of data structures.
    1. Simple data types (int, boolean, double)
      ST: 103, 152–153, 228
    2. Classes
      ST: 9–10, 35–36, 108–112, 156, 342–359, 372–373, 401–405
    3. One-dimensional arrays
      ST: 280–292, 294–306

  5. Standard Algorithms
    Standard algorithms serve as examples of good solutions to standard problems. Many are intertwined with standard data structures. These algorithms provide examples for analysis of program efficiency.
    1. Operations on A-level data structures previously listed
      1. Traversals
        ST: 283–284
      2. Insertions
        ST: 51, 286, 1142–1146
      3. Deletions
        ST: N/A–can't delete parts of arrays, parts of classes, or primitive types (explicitly…it's handled by scoping)
    2. Searching
      1. Sequential
        ST: 299–300
      2. Binary
        ST: 301–306, 1162
    3. Sorting
      1. Selection
        ST: 332 (in a problem)
      2. Insertion
        ST: 1051–1052
      3. Mergesort
        ST: 1154 (mention)

  6. Computing in Context
    A working knowledge of the major hardware and software components of computer systems is necessary for the study of computer science, as is the awareness of the ethical and social implications of computing systems. These topics need not be covered in detail, but should be considered throughout the course.
    1. Major hardware components
      1. Primary and secondary memory
        ST: 5
      2. Processors
        ST: 5
      3. Peripherals
        ST: 4–5
    2. System software
      1. Language translators/compilers
        ST: 7–15, 17–18
      2. Virtual machines
        ST: 13–15
      3. Operating systems
        ST: 6
    3. Types of systems
      1. Single-user systems
        ST: 6–7
      2. Networks
        ST: 6–7, 12–13, 915–916
    4. Responsible use of computer systems
      1. System reliability
        ST: 10
      2. Privacy
        ST: N/A
      3. Legal issues and intellectual property
        ST: N/A
      4. Social and ethical ramifications of computer use
        ST: N/A

AP® is a trademark registered and/or owned by the College Board, which was not involved in the production of, and does not endorse, this site.