Introduction
Tom Kelliher, CS23
Feb. 5, 1996
- Contract between students and instructor
- Keys: Responsibility, Commitment, Discipline
- Optional C++ book (Lippmann)
- Lippmann and Oualline on reserve
- Late assignments accepted only with prior approval
- Unannounced quizzes to encourage keeping up on reading
- Use of WWW --- abuse of WWW
- Perspective on collaboration --- useful aid, poor crutch
- Working in Unix, Unix Lab, reference books, keys
- Tentativeness of schedule
-
Demonstration of reasoning, problem solving and decomposition skills
-
Communication, correctness demonstration skills
-
Ability to detect, resolve ambiguity; exercise decision skills
-
``Fluency'' in object oriented programming, comfort with Unix, grasp of
data structures, algorithms:
- Class construction, design, mechanics
- Invariants, pre-conditions, post-conditions
- Induction, proof techniques
- Recursion, dynamic memory allocation/deallocation
- Unix, Unix tools: g++, gdb, emacs, etc.
Need to set-up Unix accounts for those who don't have them.
Problem --- Solution Design --- Implemented Program
Two components to every program:
- Data structures (implies abstract)
- Algorithms: control structures (includes abstract)
The ``old'' paradigm: modular programming
The ``new'' paradigm: object oriented programming
- Bottom-Up, message passing, model the problem
Not really a linear process
- Specification
- Design: interfaces, modularity
- Verification: correctness proof, invariants, etc.
- Coding: relatively unimportant
- Testing
- Refinement
- Production
- Maintenance
One which minimizes total cost over all phases of the life cycle
Examples:
- Calculating a tip
- Double checking a grocery receipt
- Automating LaTeX to HTML conversion
Advantages:
- Models programming teams
- Isolates programming errors given problem descriptions
- Localizes ``like'' entitites
- Lends abstraction, eases understanding
- Code reusability
- Eases modification
- Error reduction through infomation hiding
Disadvantages:
- Requires discipline, with emphasis on design
- 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