Tom Kelliher, CS23

Feb. 5, 1996



  1. Contract between students and instructor

  2. Keys: Responsibility, Commitment, Discipline

  3. Optional C++ book (Lippmann)

  4. Lippmann and Oualline on reserve

  5. Late assignments accepted only with prior approval

  6. Unannounced quizzes to encourage keeping up on reading

  7. Use of WWW --- abuse of WWW

  8. Perspective on collaboration --- useful aid, poor crutch

  9. Working in Unix, Unix Lab, reference books, keys

  10. Tentativeness of schedule

What I Expect

  1. Demonstration of reasoning, problem solving and decomposition skills

  2. Communication, correctness demonstration skills

  3. Ability to detect, resolve ambiguity; exercise decision skills

  4. ``Fluency'' in object oriented programming, comfort with Unix, grasp of data structures, algorithms:
    1. Class construction, design, mechanics
    2. Invariants, pre-conditions, post-conditions
    3. Induction, proof techniques
    4. Recursion, dynamic memory allocation/deallocation
    5. Unix, Unix tools: g++, gdb, emacs, etc.

Other information

Need to set-up Unix accounts for those who don't have them.

Problem Solving

Problem --- Solution Design --- Implemented Program

Two components to every program:

The ``old'' paradigm: modular programming

The ``new'' paradigm: object oriented programming

Software Life Cycle

Not really a linear process

  1. Specification
  2. Design: interfaces, modularity
  3. Verification: correctness proof, invariants, etc.
  4. Coding: relatively unimportant
  5. Testing
  6. Refinement
  7. Production
  8. Maintenance

What is a Good Solution?

One which minimizes total cost over all phases of the life cycle


  1. Calculating a tip
  2. Double checking a grocery receipt
  3. Automating LaTeX to HTML conversion

Modular Design


  1. Models programming teams
  2. Isolates programming errors given problem descriptions
  3. Localizes ``like'' entitites
  4. Lends abstraction, eases understanding
  5. Code reusability
  6. Eases modification
  7. Error reduction through infomation hiding


  1. Requires discipline, with emphasis on design
  2. More work required on small, one-shot projects

What are objects?

Are they related to abstract data types?

What is an ADT?

Thomas P. Kelliher
Sun Feb 4 14:48:31 EST 1996
Tom Kelliher