This document is made freely available for educational and other non-commercial use. You may make copies of this file and redistribute it without charge. You may extract portions of this document provided that the front page, including the title, author, and this notice are included. Any commercial use of this document requires the written consent of the author.
We study data structures so that we can learn to write more efficient programs. But why must programs be efficient when new computers are faster every year? The reason is that our ambitions grow with our capabilities. Instead of rendering efficiency needs obsolete, the modern revolution in computing power and storage capability merely raises the efficiency stakes as we computerize more complex tasks.
The quest for program efficiency need not and should not conflict with sound design and clear coding. Creating efficient programs has little to do with "programming tricks" but rather is based on good organization of information and good algorithms. A programmer who has not mastered the basic principles of clear design is not likely to write efficient programs. Conversely, "software engineering" cannot be used as an excuse to justify inefficient performance. Generality in design can and should be achieved without sacrificing performance, but this can only be done if the designer understands how to measure performance and does so as an integral part of the design and implementation process. Most computer science curricula recognize that good programming skills begin with a strong emphasis on fundamental software engineering principles. Then, once a programmer has learned the principles of clear program design and implementation, the next step is to study the effects of data organization and algorithms on program efficiency.
Author : Clifford A. Shaffer, Department of Computer Science, Virginia Tech
Publication Date : January 2010
View/Download A Practical Introduction to Data Structures and Algorithm Analysis Third Edition (C++ Version)
Blog Archive
-
▼
2010
(59)
-
▼
August
(39)
- Adaptive Object-Oriented Software: The Demeter Met...
- Building Skills in Object-Oriented Design - Step-b...
- Introduction to Object-Oriented Programming Using C++
- Java Au Naturel - Guide to Object Oriented Design,...
- Java: An Object First Approach
- Object-Oriented Programming And The Objective-C La...
- Object Oriented Analysis and Design - Course Notes
- Learning Object Oriented Programming with Delphi
- Seamless Object-Oriented Software Architecture - A...
- Objective-C 2.0 Essentials
- Object-Oriented System Development
- Object-Oriented Software Composition
- A Practical Introduction to Data Structures and Al...
- Algorithmic Problem Solving
- Computational Modeling and Complexity Science
- Algorithms
- Algorithms for Programmers
- Average Case Analysis of Algorithms on Sequences
- Art Gallery Theorems and Algorithms
- Art of Programming Contest
- Algorithms in the Real World: Lecture Notes
- Data Structures and Algorithms with Object-Oriente...
- Data Structures and Algorithms with Object-Oriente...
- Data Structures and Algorithms With Object-Oriente...
- Design and Analysis of Algorithms: Course Notes
- Design and Analysis of Computer Algorithms
- Efficient Algorithms for Sorting and Synchronization
- Foundations of Computer Science
- GNU libavl Online Book
- Practical Optimization: A Gentle Introduction
- Optimization Algorithms on Matrix Manifolds
- Object-oriented Programming with Ansi-C
- Notes for the Course of Data Structures
- Notes for the Course of Algorithms
- Notes for the Course of Advanced Algorithms
- Jeff Erickson's Algorithms Course Materials
- Introduction to Algorithms
- Problems on Algorithms, Second Edition
- Sorting and Searching Algorithms: A Cookbook
-
▼
August
(39)
Sunday, August 1, 2010
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment