Вернуться к структуры данных

4.7

звезд

Оценки: 2,506

•

Рецензии: 407

A good algorithm usually comes together with a set of good data structures that allow the algorithm to manipulate the data efficiently. In this course, we consider the common data structures that are used in various computational problems. You will learn how these data structures are implemented in different programming languages and will practice implementing them in our programming assignments. This will help you to understand what is going on inside a particular built-in implementation of a data structure and what to expect from it. You will also learn typical use cases for these data structures.
A few examples of questions that we are going to cover in this class are the following:
1. What is a good strategy of resizing a dynamic array?
2. How priority queues are implemented in C++, Java, and Python?
3. How to implement a hash table so that the amortized running time of all operations is O(1) on average?
4. What are good strategies to keep a binary tree balanced?
You will also learn how services like Dropbox manage to upload some large files instantly and to save a lot of storage space!
Do you have technical problems? Write to us: coursera@hse.ru...

May 24, 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!

Apr 06, 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.

Фильтр по:

автор: Lee B U

•Feb 02, 2020

매우 좋습니다.

автор: Shevelev R R

•Sep 21, 2019

Great@!

автор: Piyush M

•Jun 10, 2019

Awesome

автор: Rakesh R

•Aug 21, 2017

love it

автор: Aakar R

•Aug 06, 2016

awesome

автор: surajit d

•Jun 26, 2016

Awesome

автор: Ujjawal K

•Jan 14, 2019

Great.

автор: 刘从从

•Mar 14, 2018

难度太大了

автор: Sonu M

•Feb 18, 2019

good

автор: Lie C

•Jun 19, 2018

good

автор: 하림 이

•Oct 31, 2017

good

автор: JeongEuiDong

•Oct 30, 2017

good

автор: Harshit S

•Aug 27, 2017

The course covered important data structures and gave an insight on how to counter challenging algorithmic problem through step by step analysis from a very simple approach through slowly and steadily approaching towards better performing algorithms .This gradual rise from a learner's perspective is priceless and helps in better proficiency of the topic.Week 1 taught us basic data structures such as arrays,linked list,stacks and queues and there applications while solving problems on network processing through representing the packets in the form of queues , proper parenthesization of algebraic expressions through an application of stack and representation of tree upside down which we see everywhere in computer science as well as finding the height of a n-ary tree.Week 2 represented very common data structure used in almost any production system's source code the Array List and its time analysis through a new method called amortized time which was analyzed through banker's method,physicist method and the aggregate method .Week 3 described some pretty fast data structures whose mere usage can increase performance considerably such as priority queues whose representation are binary heaps and have special characteristics of Sifting up and Sifting down to maintain the classic heap property and it introduces a very fast sorting algorithm called heap sort.And this was not it another data structure was introduced which is called the disjoint set ( Union find) which made finding paths in very large graphical systems just a formality.The best part of this data structure remained integral to the characteristic of the course to find the efficient solution gradually but definitely as it showed which finding the union find function first through representing as arrays and assigning the parents as indexes and slowly finding the problem in arrays to go through tree representation as a necessity not just because every one has done it.Then came the fourth week and a learner's performance seeking mindset was in full throttle whether it be hash tables,hash functions or distributed hash tables used by Google Drive, Yandex Disk or Drop box there was no way stopping it and thus whole week showed how much can be achieved through hash table representation of data on which these companies integral technologies are based on.On a personal note I also saw the representation of distributed hash tables in Akamai's cloud distributed networks.The week 5 dig deeper into Binary Search Trees and there representation as well as there height were subject to scrutiny with the several applications such as AVL trees as well as Splay Trees all showed certain characteristics of height balancing which are very useful in caching and thus were considered as assignment to have a look and feel of big classes and using methods such as merge and split to get fast retrieval.Thus performance oriented mind set was explored to the fullest through playing of these data structure and applying them on real life scenarios.

автор: Буров А

•Jul 04, 2019

The lecturer Daniel Kane does not explain things clearly. I constantly had to switch to other material listed in references to understand what he was talking about. I know that usually lectures are supposed to give you only general understanding of the problem and you still have to read additional material, but with Daniel Kane it is practically useless to watch lectures. I am sorry if I offend him, but lectures were a real problem for me so I think I have to speak out.

Another issue with this course was poor design of home assignments. For example, after a huge Week 5 where we cover: search trees, binary search trees, AVL trees and all operations on these trees - there was no home assignment! Why? In consequent Week 6 we cover Splay trees and get 5 problems as home assignment. The first three problems have practically the same solution, you only need a few adjustments and these problems are on binary search tree properties (not AVL or any in particular). Then, there are remaining two problems that only cover Splay trees (as far as I understand). Such assignment design makes it hard to sort out the topic (at least for me). Moreover, the rest two problems are huge and as the result you cannot check only a fraction of your alogrithm instead you have to check it entirely. And since these problems are not necessary to complete it is really hard to motivate yourself to keep trying to submit them considering that it may take hours to find a bug in a huge (comparing to other assignments) chunk of code.

Overall, I find this course very useful, but comparing to Algorithm Toolbox the self-study section really suffered and two MAJOR topics were given to one not so good (in my opinion) lecturer. As the result I struggled not because of the course complexity, but because of inconviniences.

And also grading system acts strangely. In python3 graders don't usually accept recursion because of RecursionDepthLimit error, however, all stress tests on my computer were completed successfully, but I still had to rewrite everything in loops. I guess it is usefull to know how to implement an algorithm both in loops and recursion, but I'd prefer if they specified the appropriate method for the problem beforehand.

автор: Jenna W

•Sep 17, 2016

A really great course, you should definitely take this second after Algorithmic Toolbox, as that has an easier learning curve for the very 'CS professor' style code (lots of single letter variables and other quirks) and how projects should be submitted and tested.

That said, there is a lot of good learning in this course. Make sure you have some good Algorithms textbooks to accompany the lectures, they have recommendations in the course. I personally use Sedgewick's book and CLRS which aren't exactly what they suggest, but work well. Take your time with the learning, make sure you really understand the concepts before moving on to the homework. Use multiple sources to learn (they provide plenty of links!) and you'll do well.

In response to a very politely asked request for clarity: I rated this 4/5 rather than 5/5 stars as I found that for my preferred language (Python) some of the starter files were very poorly created. This meant I often have to rewrite the initial parsing of the inputs because it would create variables that contained incorrect or incomplete input data. Further, there were some non-harmful quirks like semi-colons or parameters shadowing Python reserved words in the code. The next course in this series, Algorithms on Graphs, did not seem to have any of these issues, though!

автор: Adrian H

•Sep 28, 2016

The final module with the Splay tree is way too difficult when compared to the rest of the material in the course. This course would be better structured with three assignments as follows: 1) tree order problem, 2) a simpler tree assignment that only deals with a basic binary search tree, 3) the set range sum problem implementing the splay tree, as an advanced problem. Aside from the difficulty of the last module, this is a great course. It's very comprehensive and you'll take away lots of useful information on course completion.

автор: Miguel R

•Sep 02, 2016

Excellent course in general, and I learned a lot of new data structures that one doesn't generally learn about in standard algorithms and data structures courses, like disjoint sets and splay trees.

Only complaint is that sometimes the problems are too complicated for how easy they are. By this I mean that the problem statement is very long and elaborate, when what they are really asking is something trivial that can be programmed in a few lines, but it takes a while to understand just what they are asking.

автор: Lee Z Y

•Sep 15, 2017

Great course! I figured disjoint sets was pretty interesting - the rest of the material I get by with no issues, but boy: the BST advanced assignments (splay trees) in week 6 is by far the hardest assignments I tried in both Algorithmic Toolbox and Data Structures. It's a pretty big jump in difficulty (I don't think they explained splay trees in the lectures very well; it was pretty fast), but I was so ecstatic when I solved it that I didn't mind.

автор: Lingjian K

•Jan 18, 2017

This course is very hard for non-STEM major student, even non CS-major student. Some concepts are very abstract to explain. The course team generally did a good job at explaining concept, but it would be better if they can offer more examples, animations, illustrations, sample code and explanations, etc. to help students understand these concepts. A rewarding course overall. Best if you are going to have a code interview.

автор: Rafael M

•Aug 05, 2017

This course was considerably harder than the first one. Content is top quality but slides lack detail and lectures some times don't do a good job explaining things well enough given the difficulty of some of the things they ask in the exercises. Still, I learned a lot of programming doing the exercises and I would still recommend it. If you're new to algorithms you will have to supplement using online resources + books.

автор: Umer M

•Sep 01, 2016

The last two weeks felt rushed. The Binary Search Tree/AVL Tree module doesn't have a quiz or an assignment and it's easy to move on without fully understanding both data structures. This allows for wasting time on the last assignment which relies on understanding AVL trees. I recommend reading the external resources for each lesson and making sure you have a grasp of the data structure before moving to the next module.

автор: SUJITH V

•Jul 10, 2018

This is a great course which gives you the basic understanding required in handling data structures along with some state of the art techniques and applications for those structures. Had a little difficulty in following binary search trees because of the pace of the course and lacking detailed explanation at places. But overall it is a really good course to get up to speed on some of the most used Data Structures.

автор: Peter C

•Sep 01, 2017

Really good course. I learned a lot and enjoyed the instruction style as well as the way the exercises and assignments were graded.

I would've given the course 5 stars were it not for the final assignment which was made very difficult not so much by the content but by the code sample we were meant to extend... It was full of global state and mutation, very hard to follow and frustrating to work with.

автор: Shaikh S A S

•May 08, 2017

This is a very good course. The only thing I had problems with was the way the tests were set up - they were giving me no information about why my code was failing. I understand the reasoning behind not releasing test cases in failing tests, but like me - a lot of people keep submitting and failing, and in the end getting discouraged . Suggesting modification of test case outputs in the future.

автор: Christopher R

•Jul 27, 2017

I loved that I had a lot of really tough but relevant problems to code and solve. I only wish the presenters were more visual. With so many splitting, inserting, merging and deleting, I was hoping for some animation on the slides in the video rather than the presenters simply waving their hands. The books for supplemental reading were really helpful along with watching the videos. a few times

- Искусственный интеллект для каждого
- Введение в TensorFlow
- Нейронные сети и глубокое обучение
- Алгоритмы, часть 1
- Алгоритмы, часть 2
- Машинное обучение
- Машинное обучение с использованием Python
- Машинное обучение с использованием Sas Viya
- Программирование на языке R
- Введение в программирование на MATLAB
- Анализ данных с Python
- Основы AWS: введение в облачные приложения
- Основы Google Cloud Platform
- Обеспечение надежности веб-сервисов
- Разговорный английский язык на профессиональном уровне
- Наука благополучия
- Научитесь учиться
- Финансовые рынки
- Проверка гипотез в здравоохранении
- Основы повседневного руководства

- Глубокое обучение
- Python для всех
- Наука о данных
- Прикладная наука о данных с Python
- Основы бизнеса
- Разработка архитектуры на платформе Google Cloud
- Инженерия данных на платформе Google Cloud
- От Excel до MySQL
- Продвинутое машинное обучение
- Математика в машинном обучении
- Беспилотные автомобили
- Блокчейн для организаций
- Бизнес-аналитика
- Навыки Excel для бизнеса
- Цифровой маркетинг
- Статистический анализ в здравоохранении на языке R
- Основы иммунологии
- Анатомия
- Управление инновациями и дизайн-мышление
- Основы позитивной психологии

- ИТ-поддержка Google
- Специалист IBM по привлечению клиентов
- Наука о данных IBM
- Прикладное управление проектами
- Профессиональная сертификация IBM в области прикладного ИИ
- Машинное обучение для Analytics
- Пространственный анализ данных и визуализация
- Проектирование и управление в строительстве
- Педагогический дизайн