Algorithms, Part I

Type product
Logo van Coursera (CC)
Opleiderscore: starstarstarstar_halfstar_border 6,6 Coursera (CC) heeft een gemiddelde beoordeling van 6,6 (uit 5 ervaringen)

Tip: meer info over het programma, prijs, en inschrijven? Download de brochure!

Beschrijving

When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan

  • Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
  • Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.

About this course: This course covers 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. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms.

Created by:  Princeton University
  • Taught by:  Kevin Wayne, Senior Lecturer

    Computer Science
  • Taught by:  Robert Sedgewick, Professor

    Computer Science
Level Intermediate Commitment 6 weeks of study, 6–10 hours per week. Language English How To Pass Pass all graded assignments t…

Lees de volledige beschrijving

Veelgestelde vragen

Er zijn nog geen veelgestelde vragen over dit product. Als je een vraag hebt, neem dan contact op met onze klantenservice.

Nog niet gevonden wat je zocht? Bekijk deze onderwerpen: Improvisatie, Scrum Master, NLP, Scrum en Scrum Product Owner.

When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan

  • Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
  • Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.

About this course: This course covers 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. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms.

Created by:  Princeton University
  • Taught by:  Kevin Wayne, Senior Lecturer

    Computer Science
  • Taught by:  Robert Sedgewick, Professor

    Computer Science
Level Intermediate Commitment 6 weeks of study, 6–10 hours per week. Language English How To Pass Pass all graded assignments to complete the course. User Ratings 4.9 stars Average User Rating 4.9See what learners said Задания курса

Каждый курс — это интерактивный учебник, который содержит видеоматериалы, тесты и проекты.

Помощь сокурсников

Общайтесь с тысячами других учащихся: обсуждайте идеи, материалы курса и помогайте друг другу осваивать новые понятия.

Princeton University Princeton University is a private research university located in Princeton, New Jersey, United States. It is one of the eight universities of the Ivy League, and one of the nine Colonial Colleges founded before the American Revolution.

Syllabus


WEEK 1


Course Introduction
Welcome to Algorithms, Part I.


1 video, 2 readings expand


  1. Материал для самостоятельного изучения: Welcome to Algorithms, Part I
  2. Материал для самостоятельного изучения: Lecture Slides
  3. Video: Course Introduction


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.


5 videos, 2 readings, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Overview
  2. Материал для самостоятельного изучения: Lecture Slides
  3. Video: Dynamic Connectivity
  4. Video: Quick Find
  5. Video: Quick Union
  6. Video: Quick-Union Improvements
  7. Video: Union−Find Applications
  8. Тренировочный тест: Interview Questions (optional)

Graded: Percolation

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.


6 videos, 1 reading, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Lecture Slides
  2. Video: Analysis of Algorithms Introduction
  3. Video: Observations
  4. Video: Mathematical Models
  5. Video: Order-of-Growth Classifications
  6. Video: Theory of Algorithms
  7. Video: Memory
  8. Тренировочный тест: Interview Questions (optional)


WEEK 2


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.


6 videos, 2 readings, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Overview
  2. Материал для самостоятельного изучения: Lecture Slides
  3. Video: Stacks
  4. Video: Resizing Arrays
  5. Video: Queues
  6. Video: Generics
  7. Video: Iterators
  8. Video: Stack and Queue Applications (optional)
  9. Тренировочный тест: Interview Questions (optional)

Graded: Deques and Randomized Queues

Elementary Sorts



We introduce the sorting problem and Java's Comparable interface. We study two elementary sorting methods (selection sort and insertion sort) and a variation of one of them (shellsort). We also consider two algorithms for uniformly shuffling an array. We conclude with an application of sorting to computing the convex hull via the Graham scan algorithm.


6 videos, 1 reading, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Lecture Slides
  2. Video: Sorting Introduction
  3. Video: Selection Sort
  4. Video: Insertion Sort
  5. Video: Shellsort
  6. Video: Shuffling
  7. Video: Convex Hull
  8. Тренировочный тест: Interview Questions (optional)


WEEK 3


Mergesort



We study the mergesort algorithm and show that it guarantees to sort any array of n items with at most n lg n compares. We also consider a nonrecursive, bottom-up version. We prove that any compare-based sorting algorithm must make at least n lg n compares in the worst case. We discuss using different orderings for the objects that we are sorting and the related concept of stability.


5 videos, 2 readings, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Overview
  2. Материал для самостоятельного изучения: Lecture Slides
  3. Video: Mergesort
  4. Video: Bottom-up Mergesort
  5. Video: Sorting Complexity
  6. Video: Comparators
  7. Video: Stability
  8. Тренировочный тест: Interview Questions (optional)

Graded: Collinear Points

Quicksort



We introduce and implement the randomized quicksort algorithm and analyze its performance. We also consider randomized quickselect, a quicksort variant which finds the kth smallest item in linear time. Finally, we consider 3-way quicksort, a variant of quicksort that works especially well in the presence of duplicate keys.


4 videos, 1 reading, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Lecture Slides
  2. Video: Quicksort
  3. Video: Selection
  4. Video: Duplicate Keys
  5. Video: System Sorts
  6. Тренировочный тест: Interview Questions (optional)


WEEK 4


Priority Queues



We introduce the priority queue data type and an efficient implementation using the binary heap data structure. This implementation also leads to an efficient sorting algorithm known as heapsort. We conclude with an applications of priority queues where we simulate the motion of n particles subject to the laws of elastic collision.


4 videos, 2 readings, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Overview
  2. Материал для самостоятельного изучения: Lecture Slides
  3. Video: APIs and Elementary Implementations
  4. Video: Binary Heaps
  5. Video: Heapsort
  6. Video: Event-Driven Simulation (optional)
  7. Тренировочный тест: Interview Questions (optional)

Graded: 8 Puzzle

Elementary Symbol Tables



We define an API for symbol tables (also known as associative arrays, maps, or dictionaries) and describe two elementary implementations using a sorted array (binary search) and an unordered list (sequential search). When the keys are Comparable, we define an extended API that includes the additional methods min, max floor, ceiling, rank, and select. To develop an efficient implementation of this API, we study the binary search tree data structure and analyze its performance.


6 videos, 1 reading, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Lecture Slides
  2. Video: Symbol Table API
  3. Video: Elementary Implementations
  4. Video: Ordered Operations
  5. Video: Binary Search Trees
  6. Video: Ordered Operations in BSTs
  7. Video: Deletion in BSTs
  8. Тренировочный тест: Interview Questions (optional)


WEEK 5


Balanced Search Trees



In this lecture, our goal is to develop a symbol table with guaranteed logarithmic performance for search and insert (and many other operations). We begin with 2−3 trees, which are easy to analyze but hard to implement. Next, we consider red−black binary search trees, which we view as a novel way to implement 2−3 trees as binary search trees. Finally, we introduce B-trees, a generalization of 2−3 trees that are widely used to implement file systems.


3 videos, 2 readings, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Overview
  2. Материал для самостоятельного изучения: Lecture Slides
  3. Video: 2−3 Search Trees
  4. Video: Red-Black BSTs
  5. Video: B-Trees (optional)
  6. Тренировочный тест: Interview Questions (optional)


Geometric Applications of BSTs



We start with 1d and 2d range searching, where the goal is to find all points in a given 1d or 2d interval. To accomplish this, we consider kd-trees, a natural generalization of BSTs when the keys are points in the plane (or higher dimensions). We also consider intersection problems, where the goal is to find all intersections among a set of line segments or rectangles.


5 videos, 1 reading expand


  1. Материал для самостоятельного изучения: Lecture Slides
  2. Video: 1d Range Search
  3. Video: Line Segment Intersection
  4. Video: Kd-Trees
  5. Video: Interval Search Trees
  6. Video: Rectangle Intersection

Graded: Kd-Trees

WEEK 6


Hash Tables



We begin by describing the desirable properties of hash function and how to implement them in Java, including a fundamental tenet known as the uniform hashing assumption that underlies the potential success of a hashing application. Then, we consider two strategies for implementing hash tables—separate chaining and linear probing. Both strategies yield constant-time performance for search and insert under the uniform hashing assumption.


4 videos, 2 readings, 1 practice quiz expand


  1. Материал для самостоятельного изучения: Overview
  2. Материал для самостоятельного изучения: Lecture Slides
  3. Video: Hash Tables
  4. Video: Separate Chaining
  5. Video: Linear Probing
  6. Video: Hash Table Context
  7. Тренировочный тест: Interview Questions (optional)


Symbol Table Applications
We consider various applications of symbol tables including sets, dictionary clients, indexing clients, and sparse vectors.


4 videos, 1 reading expand


  1. Материал для самостоятельного изучения: Lecture Slides
  2. Video: Symbol Table Applications: Sets (optional)
  3. Video: Symbol Table Applications: Dictionary Clients (optional)
  4. Video: Symbol Table Applications: Indexing Clients (optional)
  5. Video: Symbol Table Applications: Sparse Vectors (optional)

Blijf op de hoogte van nieuwe ervaringen

Er zijn nog geen ervaringen.

Deel je ervaring

Heb je ervaring met deze cursus? Deel je ervaring en help anderen kiezen. Als dank voor de moeite doneert Springest € 1,- aan Stichting Edukans.

Er zijn nog geen veelgestelde vragen over dit product. Als je een vraag hebt, neem dan contact op met onze klantenservice.

Download gratis en vrijblijvend de informatiebrochure

Aanhef
(optioneel)
(optioneel)
(optioneel)
(optioneel)
(optioneel)

Heb je nog vragen?

(optioneel)
We slaan je gegevens op om je via e-mail en evt. telefoon verder te helpen.
Meer info vind je in ons privacybeleid.