このコースについて
4.7
1,959件の評価
326件のレビュー

100%オンライン

自分のスケジュールですぐに学習を始めてください。

柔軟性のある期限

スケジュールに従って期限をリセットします。

中級レベル

Basic knowledge of at least one programming language: C++, Java, Python, C, C#, Javascript, Haskell, Kotlin, Ruby, Rust, Scala.

約28時間で修了

推奨:4 weeks of study, 5-10 hours/week...

英語

字幕:英語

習得するスキル

Binary Search TreePriority QueueHash TableStack (Abstract Data Type)List

100%オンライン

自分のスケジュールですぐに学習を始めてください。

柔軟性のある期限

スケジュールに従って期限をリセットします。

中級レベル

Basic knowledge of at least one programming language: C++, Java, Python, C, C#, Javascript, Haskell, Kotlin, Ruby, Rust, Scala.

約28時間で修了

推奨:4 weeks of study, 5-10 hours/week...

英語

字幕:英語

シラバス - 本コースの学習内容

1
4時間で修了

Basic Data Structures

In this module, you will learn about the basic data structures used throughout the rest of this course. We start this module by looking in detail at the fundamental building blocks: arrays and linked lists. From there, we build up two important data structures: stacks and queues. Next, we look at trees: examples of how they’re used in Computer Science, how they’re implemented, and the various ways they can be traversed. Once you’ve completed this module, you will be able to implement any of these data structures, as well as have a solid understanding of the costs of the operations, as well as the tradeoffs involved in using each data structure....
7件のビデオ (合計60分), 7 readings, 2 quizzes
7件のビデオ
Arrays7 分
Singly-Linked Lists9 分
Doubly-Linked Lists4 分
Stacks10 分
Queues7 分
Trees11 分
Tree Traversal10 分
7件の学習用教材
Welcome10 分
Slides and External References10 分
Slides and External References10 分
Slides and External References10 分
Available Programming Languages10 分
FAQ on Programming Assignments10 分
Acknowledgements10 分
1の練習問題
Basic Data Structures10 分
2
1時間で修了

Dynamic Arrays and Amortized Analysis

In this module, we discuss Dynamic Arrays: a way of using arrays when it is unknown ahead-of-time how many elements will be needed. Here, we also discuss amortized analysis: a method of determining the amortized cost of an operation over a sequence of operations. Amortized analysis is very often used to analyse performance of algorithms when the straightforward analysis produces unsatisfactory results, but amortized analysis helps to show that the algorithm is actually efficient. It is used both for Dynamic Arrays analysis and will also be used in the end of this course to analyze Splay trees....
5件のビデオ (合計31分), 1 reading, 1 quiz
5件のビデオ
Amortized Analysis: Aggregate Method5 分
Amortized Analysis: Banker's Method6 分
Amortized Analysis: Physicist's Method7 分
Amortized Analysis: Summary2 分
1件の学習用教材
Slides and External References10 分
1の練習問題
Dynamic Arrays and Amortized Analysis8 分
3
6時間で修了

Priority Queues and Disjoint Sets

We start this module by considering priority queues which are used to efficiently schedule jobs, either in the context of a computer operating system or in real life, to sort huge files, which is the most important building block for any Big Data processing algorithm, and to efficiently compute shortest paths in graphs, which is a topic we will cover in our next course. For this reason, priority queues have built-in implementations in many programming languages, including C++, Java, and Python. We will see that these implementations are based on a beautiful idea of storing a complete binary tree in an array that allows to implement all priority queue methods in just few lines of code. We will then switch to disjoint sets data structure that is used, for example, in dynamic graph connectivity and image processing. We will see again how simple and natural ideas lead to an implementation that is both easy to code and very efficient. By completing this module, you will be able to implement both these data structures efficiently from scratch....
15件のビデオ (合計129分), 6 readings, 4 quizzes
15件のビデオ
Naive Implementations of Priority Queues5 分
Binary Trees1 分
Basic Operations12 分
Complete Binary Trees9 分
Pseudocode8 分
Heap Sort10 分
Building a Heap10 分
Final Remarks4 分
Overview7 分
Naive Implementations10 分
Trees for Disjoint Sets7 分
Union by Rank9 分
Path Compression6 分
Analysis (Optional)18 分
6件の学習用教材
Slides10 分
Tree Height Remark10 分
Slides and External References10 分
Slides and External References10 分
Slides and External References10 分
Slides and External References10 分
3の練習問題
Priority Queues: Quiz12 分
Quiz: Disjoint Sets8 分
Priority Queues and Disjoint Sets6 分
4
6時間で修了

Hash Tables

In this module you will learn about very powerful and widely used technique called hashing. Its applications include implementation of programming languages, file systems, pattern search, distributed key-value storage and many more. You will learn how to implement data structures to store and modify sets of objects and mappings from one type of objects to another one. You will see that naive implementations either consume huge amount of memory or are slow, and then you will learn to implement hash tables that use linear memory and work in O(1) on average! In the end, you will learn how hash functions are used in modern disrtibuted systems and how they are used to optimize storage of services like Dropbox, Google Drive and Yandex Disk!...
22件のビデオ (合計170分), 4 readings, 3 quizzes
22件のビデオ
Analysing Service Access Logs7 分
Direct Addressing7 分
List-based Mapping8 分
Hash Functions3 分
Chaining Scheme6 分
Chaining Implementation and Analysis5 分
Hash Tables6 分
Phone Book Problem4 分
Phone Book Problem - Continued6 分
Universal Family9 分
Hashing Integers9 分
Proof: Upper Bound for Chain Length (Optional)8 分
Proof: Universal Family for Integers (Optional)11 分
Hashing Strings9 分
Hashing Strings - Cardinality Fix7 分
Search Pattern in Text7 分
Rabin-Karp's Algorithm9 分
Optimization: Precomputation9 分
Optimization: Implementation and Analysis5 分
Instant Uploads and Storage Optimization in Dropbox10 分
Distributed Hash Tables12 分
4件の学習用教材
Slides and External References10 分
Slides and External References10 分
Slides and External References10 分
Slides and External References10 分
2の練習問題
Hash Tables and Hash Functions8 分
Hashing6 分
5
2時間で修了

Binary Search Trees

In this module we study binary search trees, which are a data structure for doing searches on dynamically changing ordered sets. You will learn about many of the difficulties in accomplishing this task and the ways in which we can overcome them. In order to do this you will need to learn the basic structure of binary search trees, how to insert and delete without destroying this structure, and how to ensure that the tree remains balanced....
7件のビデオ (合計55分), 2 readings, 1 quiz
7件のビデオ
Search Trees5 分
Basic Operations10 分
Balance5 分
AVL Trees5 分
AVL Tree Implementation9 分
Split and Merge9 分
2件の学習用教材
Slides and External References10 分
Slides and External References10 分
1の練習問題
Binary Search Trees20 分
6
4時間で修了

Binary Search Trees 2

In this module we continue studying binary search trees. We study a few non-trivial applications. We then study the new kind of balanced search trees - Splay Trees. They adapt to the queries dynamically and are optimal in many ways....
4件のビデオ (合計36分), 2 readings, 2 quizzes
4件のビデオ
Splay Trees: Introduction6 分
Splay Trees: Implementation7 分
(Optional) Splay Trees: Analysis10 分
2件の学習用教材
Slides and External References10 分
Slides and External References10 分
1の練習問題
Splay Trees6 分
4.7
326件のレビューChevron Right

32%

コース終了後に新しいキャリアをスタートした

37%

コースが具体的なキャリアアップにつながった

11%

昇給や昇進につながった

人気のレビュー

by DGMay 24th 2016

I like this course very much! Rope is the cleverest task I have ever done! Of course, I hope in future I will work on even more difficult problems, but this is pretty good already for me as a student!

by TTApr 6th 2018

Data Structures was really interesting over all, also assignments are quite challenging. It's important to consult the external references & discussion forums if you want to get the best of it.

講師

Avatar

Alexander S. Kulikov

Visiting Professor
Department of Computer Science and Engineering
Avatar

Michael Levin

Lecturer
Computer Science
Avatar

Daniel M Kane

Assistant Professor
Department of Computer Science and Engineering / Department of Mathematics
Avatar

Neil Rhodes

Adjunct Faculty
Computer Science and Engineering

カリフォルニア大学サンディエゴ校について

UC San Diego is an academic powerhouse and economic engine, recognized as one of the top 10 public universities by U.S. News and World Report. Innovation is central to who we are and what we do. Here, students learn that knowledge isn't just acquired in the classroom—life is their laboratory....

ロシア国立研究大学経済高等学院(National Research University Higher School of Economics)について

National Research University - Higher School of Economics (HSE) is one of the top research universities in Russia. Established in 1992 to promote new research and teaching in economics and related disciplines, it now offers programs at all levels of university education across an extraordinary range of fields of study including business, sociology, cultural studies, philosophy, political science, international relations, law, Asian studies, media and communicamathematics, engineering, and more. Learn more on www.hse.ru...

データ構造とアルゴリズムの専門講座について

This specialization is a mix of theory and practice: you will learn algorithmic techniques for solving various computational problems and will implement about 100 algorithmic coding problems in a programming language of your choice. No other online course in Algorithms even comes close to offering you a wealth of programming challenges that you may face at your next job interview. To prepare you, we invested over 3000 hours into designing our challenges as an alternative to multiple choice questions that you usually find in MOOCs. Sorry, we do not believe in multiple choice questions when it comes to learning algorithms...or anything else in computer science! For each algorithm you develop and implement, we designed multiple tests to check its correctness and running time — you will have to debug your programs without even knowing what these tests are! It may sound difficult, but we believe it is the only way to truly understand how the algorithms work and to master the art of programming. The specialization contains two real-world projects: Big Networks and Genome Assembly. You will analyze both road networks and social networks and will learn how to compute the shortest route between New York and San Francisco (1000 times faster than the standard shortest path algorithms!) Afterwards, you will learn how to assemble genomes from millions of short fragments of DNA and how assembly algorithms fuel recent developments in personalized medicine....
データ構造とアルゴリズム

よくある質問

  • 修了証に登録すると、すべてのビデオ、テスト、およびプログラミング課題(該当する場合)にアクセスできます。ピアレビュー課題は、セッションが開始してからのみ、提出およびレビューできます。購入せずにコースを検討することを選択する場合、特定の課題にアクセスすることはできません。

  • コースに登録する際、専門講座のすべてのコースにアクセスできます。コースの完了時には修了証を取得できます。電子修了証が成果のページに追加され、そこから修了証を印刷したり、LinkedInのプロフィールに追加したりできます。コースの内容の閲覧のみを希望する場合は、無料でコースを聴講できます。

さらに質問がある場合は、受講者向けヘルプセンターにアクセスしてください。