technifyed

Princeton University via Coursera

Algorithms, Part I

4.912,148 ratings at Coursera

Overview

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.

All the features of this course are available for free. People who are interested in digging deeper into the content may wish to obtain the textbook Algorithms, Fourth Edition (upon which the course is based) or visit the website algs4.cs.princeton.edu for a wealth of additional material.

This course does not offer a certificate upon completion.

Syllabus 13

  1. Course Introduction 1 hour

    Welcome to Algorithms, Part I.

  2. Union−Find 9 hours

    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). Finall…

  3. Analysis of Algorithms 1 hour

    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 ex…

  4. Stacks and Queues 9 hours

    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 applica…

  5. Elementary Sorts 1 hour

    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 c…

  6. Mergesort 9 hours

    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 differ…

  7. Quicksort 50 minutes

    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 pr…

  8. Priority Queues 9.5 hours

    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…

  9. Elementary Symbol Tables 2 hours

    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 addition…

  10. Balanced Search Trees 1.5 hours

    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 t…

  11. Geometric Applications of BSTs 9 hours

    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…

  12. Hash Tables 1 hour

    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—sepa…

  13. Symbol Table Applications 25 minutes

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

Skills you'll practise

Computer ProgrammingData StructuresAlgorithmsJava Programming

Advantages and disadvantages

Advantages

  • Structured courses with graded quizzes, assignments and deadlines you can reset.
  • A shareable certificate from the university or company when you pay.
  • Financial aid is often approved for students in India (apply 15 days before you need it).
  • Taught by Princeton University, one of the strongest names in its field.
  • Rated 4.9 out of 5 by 12,148 learners.
  • Self-paced: start any time.
  • A clear syllabus (13 parts) you can see before you start.

Disadvantages

  • Paid after a 7-day free trial (Coursera Plus or per course).
  • Some courses can be audited for free, but graded work and certificates need payment.

Some points apply to every course of this kind; see how we rank.

This course is paid. Here is how to take it for free

  • Free trials: You can start a 7-day free trial for many individual courses, Specializations, or a Coursera Plus subscription to test full course features. Cancel before the seventh day if you do not want to be charged.
  • Financial aid: If you cannot afford the fee for a certificate, you can apply for financial aid through the link on the course home page by filling out an application about your background and goals.

Taught by

  • Kevin WaynePhillip Y. Goldman '86 University Lecturer, Computer Science
  • Robert SedgewickWilliam O. Baker *39 Professor in Computer Science, Emeritus, Computer Science

Princeton University is in Tier 1: world-leading universities and India's top institutes of our institution ranking (96/100).

Similar courses

Compare these

Massachusetts Institute of Technology · YouTube

MIT 6.01SC Introduction to EECS I

Instructor: Dennis Freeman, Kendra Pugh This course provides an integrated introduction to electrical engineering and computer science, including modern software engineering, linear systems analysis, electronic circuits, and decision-making. The lecture videos provide an overview of each topic, whi…

Free video27 videos, 17 hours

Harvard University · edX

Fundamentals of TinyML

4.567 ratings

Focusing on the basics of machine learning and embedded systems, such as smartphones, this course will introduce you to the “language” of TinyML.

Free to audit5 weeks, 2 - 4 hours per week

Harvard University · edX

Introduction to Data Science with Python

4.3174 ratings

Learn the concepts and techniques that make up the foundation of data science and machine learning.

Free to audit8 weeks, 3 - 5 hours per week

Harvard University · edX

CS50's Introduction to Computer Science

An introduction to the intellectual enterprises of computer science and the art of programming.

Free to audit12 weeks, 5 - 14 hours per week

Harvard University · edX

Data Science: Building Machine Learning Models

4.4133 ratings

Build a movie recommendation system and learn the science behind one of the most popular and successful data science techniques.

Free to audit8 weeks, 2 - 3 hours per week

Harvard University · edX

CS50's Introduction to Programming with Python

An introduction to programming using Python, a popular language for general-purpose programming, data science, web programming, and more.

Free to audit10 weeks, 3 - 6 hours per week

Enter your email and the official page opens. Phone is optional.