Data Structures

Data Structures - Niema Moshiri and Liz Izhikevich - 2016

Certificate Stepik

About this course

This interactive textbook was written with the intention of teaching Computer Science students about various data structures as well as the applications in which each data structure would be appropriate to use. It is currently being used at the University of California, San Diego (UCSD), the University of San Diego (USD), and the University of Puerto Rico (UPR).

This textbook utilizes the Active Learning approach to instruction, meaning it has various activities embedded throughout to help stimulate your learning and improve your understanding of the materials we will cover. You will encounter STOP and Think questions that will help you reflect on the material, Exercise Breaks that will test your knowledge and understanding of the concepts discussed, and Code Challenges that will allow you to actually implement some of the algorithms we will cover.

Currently, all code challenges are in C++ or Python, but the vast majority of the textbook's content is language-agnostic theory of complexity and algorithm analysis. In other words, even without C++ or Python knowledge, the key takeaways of the textbook can still be obtained.

Meet the Instructors

User picture
Niema Moshiri
PhD candidate in Bioinformatics and Systems Biology at UC San Diego, SD-raised
My name is (Alexander) Niema Moshiri, and I am currently a Ph.D. candidate in the Bioinformatics and Systems Biology program at the University of California, San Diego. I work on computational biology, with a research focus on phylogenetics and phylogenomics. I am co-advised by Dr. Siavash Mirarab and Dr. Pavel Pevzner. I also place a heavy emphasis on teaching, namely on the development of online educational content, primarily Massive Adaptive Interactive Texts (MAITs).

Course content

Introduction and Review
Introductory Data Structures
Tree Structures
Introduction to Graphs
Implementing a Lexicon
Coding and Information Compression



Student reviews

Interesting course on basic algorithms and data structures. Purely subjectively, there is not enough practice, especially in algorithms, but this is easily compensated by tasks on third-party resources.
A very detailed, comprehensive and interesting course covering a quite wide range of algorithms. Perhaps what set this course apart from many others, including by stalwarts like Sedgewick on Coursera, is the learners perspective of its creators. They explore the subject along with the reader as a fellow student, rather than presenting it in a dogmatic and professing way. Instead of introducing a data structure with a theoretical approach, they spend considerable time and effort in describing it's practical applications and overall working. However, they also don't skimp on theory until unless it's very advanced. This makes course pretty pragmatic. At times they fumbled too but immediately corrected by taking up suggestions from the audience. This gives a very natural and honest feeling to their approach of teaching and makes the overall learning process very conducive. In particular, Niema was very prompt in replying to all the queries. Special kudos for that. Some suggestion would be to include more advanced programming exercises (even if non-graded) with few hints. Also, few sections felt rushed through (AVL, bitwise operators). Either these can be replenished or replaced with more graded exercises on remaining concepts. Will look forward to any other such courses by the same authors.
This course is more complex than the course that I had in presencial course, It is really amazing and every computer science student should do it.

Share this course