Author : Clifford A. Shaffer, Department of Computer Science, Virginia Tech
Publication Date : January 2010
We study data structures so that we can learn to write more efﬁcient programs.But why must programs be efﬁcient when new computers are faster every year? The reason is that our ambitions grow with our capabilities. Instead of rendering efﬁciency needs obsolete, the modern revolution in computing power and storage capability merely raises the efﬁciency stakes as we attempt more complex tasks. The quest for program efﬁciency need not and should not conﬂict with sound design and clear coding. Creating efﬁcient 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 efﬁcient programs. Conversely, concerns related to development costs and maintainability should not be used as an excuse to justify inefﬁcient performance. Generality in design can and should be achieved without sacriﬁcing 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 efﬁciency.
- Fundamental Data Structures
- Sorting and Searching
- File Processing and External Sorting
- Advanced Data Structures
- Theory of Algorithms