Publisher's Synopsis
lt;p style="margin:0px;"> 24+ Hours of Video Instruction These Algorithms Video Lectures cover the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Description This collection of video lectures provides a comprehensive exploration of fundamental data types, algorithms, and data structures, with an emphasis on applications and scientific performance analysis of Java implementations. The instructors offer readings related to these lectures that you can find in Algorithms, Fourth Edition, the leading textbook on algorithms today. These lectures provide another perspective on the material presented in the book and generally cover the material in the same order, though some book topics have been combined, rearranged, or omitted in the lectures. Don't have the book? Purchase Algorithms, Deluxe Edition, which includes the print book and full access to the lecture videos. You also can find related resources on the instructors' web site, including the following: Full Java implementations Test data Exercises and answers Dynamic visualizations Lecture slides Programming assignments with checklists Other links to related material Customer Reviews " This is the best explanation of algorithms I've seen in years. It covers many topics ina thorough manner that makes learning this subject delightful. Dr. Sedgewick'steaching style is engaging. I highly recommend this series." About the Instructors Robert Sedgewick is the William O. Baker Professor of Computer Science at Princeton University. He is a Director of Adobe Systems and has served on the research staffs at Xerox PARC, IDA, and INRIA. He earned his PhD from Stanford University under Donald E. Knuth. Kevin Wayne also teaches in the Department of Computer Science at Princeton University. His research focuses on theoretical computer science, especially optimization and the design, analysis, and implementation of computer algorithms. Wayne received his PhD from Cornell University. Skill Level All Levels What You Will Learn These videos survey the most important computer algorithms in use today. The algorithms described in these lectures represent a body of knowledge developed of the last 50 years that has become indispensable. These lectures present: Implementations of useful algorithms Detailed information on performance characteristics Examples of clients and applications The early lectures cover our fundamental approach to studying algorithms, including data types for stacks, queues, and other low-level abstractions. Then we cover these major topics: Sorting algorithms, highlighting the classic Quicksort and Mergesort algorithms. Searching algorithms, including search methods based on balanced search trees and hashing. String-processing algorithms, from tries and substring search to regular expression search and data compression. Graph algorithms, starting with graph search, shortest paths, and minimum spanning trees, and working up to maximum flow/minimum cut and applications. Reductions, linear programming, and intractability. Who Should Take This Course The study of algorithms and data structures is fundamental to any computer-science curriculum, but it is not just for programmers and computer science students. These lectures are intended for: Any student (from high school to graduate level) having a good introduction to programming, with an interest in majoring in any science or engineering discipline (including computer science). Anyone using a computer to address large problems that require an understanding of efficient algorithms. Anyone interested in preparing for a career in industry involving software or computer applications. Course Requirements Basic familiarity with Java Some background in programming Table of Contents Lecture 1: Union-Find. We illustrate our basic approach to developing and analyzing algorithms by considering the dynamic connectivity problem. We introduce the union-find data type and consider several implementations (quick find, quick union, weighted quick union, and weighted quick union with path compression). Finally, we apply the union-find data type to the percolation problem from physical chemistry. Lecture 2: Analysis of Algorithms. The basis of our approach for analyzing the performance of algorithms is the scientific method. We begin by performing computational experiments to measure the running times of our programs. We use these measurements to develop hypotheses about performance. Next, we create mathematical models to explain their behavior. Finally, we consider analyzing the memory usage of our Java programs. Lecture 3: Stacks and Queues. We consider two fundamental data types for storing collections of objects: the stack and the queue. We implement each using either a singly-linked list or a resizing array. We introduce two advanced Java features-generics and iterators-that simplify client code. Finally, we consider various applications of stacks and queues ranging from parsing arithmetic expressions to simulating queueing systems. Lecture 4: Elementary Sorts. We introduce the sorting problem and Java's Comparable interface. We study two elementary sorting methods (selection sort andinsertion sort) and a variation of one of them (shel.