Welcome to Data Structures!
Description
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.
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.
The source code for the course is made available on this GitHub repository and will be updated as the text itself is updated. To access the actual textbook itself (which is completely free to access), join the edX course, Data Structures: An Active Learning Approach.
About the Authors
Niema Moshiri is a Ph.D. student in University of California, San Diego's Bioinformatics and Systems Biology (BISB) program. His educational background is in Bioinformatics, which spans Computer Science (with a focus on Algorithm Design) and Biology (with a focus on Molecular Biology). He is co-advised by Siavash Mirarab and Pavel Pevzner, with whom he performs research in Computational Biology with a focus on Phylogenetics and Phylogenomics.
Liz Izhikevich is completing her Bachelors in Computer Science with a Minor in Mathematics at the University of California, San Diego. She has spent over a year working with and developing the content of multiple Advanced Data Structures courses at UCSD. She is also the co-founder of Data Science Student Society (DS3) and does research focused on the intersection of Data Science and Computational Neuroscience in Bradley Voytek’s lab.
Acknowledgements
We would like to thank Christine Alvarado for providing the motivation for the creation of this textbook by incorporating it into her Advanced Data Structures course at UC San Diego, as well as for reviewing the content and providing useful feedback for revisions.
We would also like to thank Paul Kube, whose detailed lecture slides served as a great reference for many of the topics discussed (especially the lesson walking through the proof for the Binary Search Tree average-case time complexity).
Also, we would like to thank David Galles, whose data structure visualizations were incorporated throughout this text.
Lastly, we would like to thank Phillip Compeau and Pavel Pevzner, whose textbook (Bioinformatics Algorithms) served as inspiration for writing style and instructional approach.