Introduction

Tom Kelliher, CS23

Feb. 5, 1996

Introduction

Syllabus

  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

Examples:

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

Modular Design

Advantages:

  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

Disadvantages:

  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