Design and Analysis of Computer Algorithms
by David M. Mount
Publisher: University of Maryland 2003
Number of pages: 135
Programming is a very complex task, and there are a number of aspects of programming that make it so complex. The first is that most programming projects are very large, requiring the coordinated efforts of many people. (This is the topic a course like software engineering.) The next is that many programming projects involve storing and accessing large quantities of data efficiently. (This is the topic of courses on data structures and databases.) The last is that many programming projects involve solving complex computational problems, for which simplistic or naive solutions may not be efficient enough. The complex problems may involve numerical data (the subject of courses on numerical analysis), but often they involve discrete data. This is where the topic of algorithm design and analysis is important.
Home page url
Download or read it online for free here:
by Guy Blelloch - The MIT Press
Vector Models for Data-Parallel Computing describes a model of parallelism that extends and formalizes the Data-Parallel model on which the Connection Machine and other supercomputers are based. It presents many algorithms based on the model.
by Herbert Edelsbrunner - Duke University
The main topics to be covered in this course are: Design Techniques; Searching; Prioritizing; Graph Algorithms; Topological Algorithms; Geometric Algorithms; NP-completeness. The emphasis will be on algorithm design and on algorithm analysis.
by Ian Craw, John Pulham - University of Aberdeen
This course studies computer algorithms, their construction, validation and effectiveness. A number of topics will be covered: a general introduction to the subject, the problem of sorting data sets into order, the theory of formal grammars, etc.
by James Aspnes - Yale University
Topics include programming in C; data structures (arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching; storage allocation and management; data abstraction; programming style; testing and debugging; writing efficient programs.