Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Alexander S. Kulikov, Michael Levin, Daniel M Kane, and Neil Rhodes

A good algorithm usually comes together with a set of good data structures that allow the algorithm to manipulate the data efficiently. In this online 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.

Read more

A good algorithm usually comes together with a set of good data structures that allow the algorithm to manipulate the data efficiently. In this online 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!

Enroll now

What's inside

Syllabus

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.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Teaches skills, knowledge, and tools that are core skills for developers
Examines topics that are highly relevant to computer science and programming
Taught by Alexander S. Kulikov, Daniel M Kane, Neil Rhodes, and Michael Levin, who are recognized for their work in data structures
Instructs students to focus on well-designed data structures alongside efficient algorithms
Builds a strong foundation for beginners and strengthens existing foundations for intermediate learners
Provides foundational knowledge that will help learners in various computational problems

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Strong foundation in data structures

According to learners, this course provides a strong theoretical and practical foundation essential for computer science and software engineering. Students often praise the clarity of the lectures and the way complex concepts are explained. However, the programming assignments are frequently cited as challenging and time-consuming, requiring significant effort beyond the lecture material. While some find the pacing fast, many agree the hands-on coding is invaluable for solidifying understanding. The course is seen as excellent preparation for technical interviews and further advanced topics, though beginners without prior programming experience might find it difficult or overwhelming.
Assignments are key but demanding.
"The programming assignments are quite rigorous but incredibly helpful for understanding the concepts deeply."
"Had to spend a lot of time on the coding problems, much more than anticipated."
"The difficulty of the assignments really pushes you, which is good, but be prepared for the time commitment."
"Found the assignments crucial, even though they were sometimes frustratingly difficult."
Good balance of theory and practice.
"Appreciated the balance between theoretical concepts and practical implementation."
"Doesn't just teach theory, it makes you code and understand the practical implications."
"Liked how they showed implementations in different languages, linking theory to practice."
"Provides both the 'why' and the 'how' for each data structure."
Builds essential core CS knowledge.
"This course gave me a solid foundation in data structures and algorithms that I was missing."
"Crucial for anyone serious about computer science or preparing for coding interviews."
"I now feel much more confident about tackling problems involving data structures."
"Provides the necessary building blocks for more advanced topics later on."
Concepts explained clearly, well-structured.
"The instructor does a fantastic job explaining complex data structures in an understandable way."
"Lectures are well-organized and easy to follow, breaking down difficult topics."
"Found the explanations of algorithms and data structures particularly clear."
"The way they explained hash tables and binary trees was very intuitive."
Pace can be quick, especially for newcomers.
"The course moves very quickly, especially in the later modules."
"If you don't have a strong programming background, the speed might be hard to keep up with."
"Had to pause and rewatch lectures often because of the fast pace."
"Could benefit from slowing down slightly in some areas for better absorption."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Data Structures with these activities:
Review Basic Data Structures
Reviewing basic data structures like arrays, linked lists, stacks, and queues will prepare you for learning more advanced data structures in the course.
Browse courses on Arrays
Show steps
  • Go over your notes from a previous data structures course or textbook.
  • Work through some practice problems to test your understanding.
Join a Study Group
Joining a study group will provide you with opportunities to discuss the course material with other students, ask questions, and work through problems together.
Show steps
  • Find a study group that meets your schedule and learning style.
  • Attend study group meetings regularly.
  • Participate actively in discussions.
  • Help other students with their understanding of the material.
Learn About Hashing Techniques
Hashing is a fundamental technique used in many different applications. Following a tutorial on hashing will help you understand how to implement and use hash tables effectively.
Browse courses on Hashing
Show steps
  • Find a tutorial on hashing that is appropriate for your skill level.
  • Work through the tutorial, taking notes and completing any practice exercises.
  • Implement a hash table in your preferred programming language.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement a Data Structure in Your Preferred Programming Language
Implementing a data structure in your preferred programming language will help you gain a deeper understanding of how the data structure works and how to use it effectively.
Browse courses on Data Structures
Show steps
  • Choose a data structure that you are interested in implementing.
  • Research the data structure and learn about its properties and uses.
  • Implement the data structure in your chosen programming language.
  • Test your implementation to make sure that it is working correctly.
  • Write documentation for your implementation.
Solve Data Structures Coding Challenges
Solving data structures coding challenges will help you develop your problem-solving skills and improve your understanding of how data structures are used in practice.
Browse courses on Data Structures
Show steps
  • Find a website or platform that offers data structures coding challenges.
  • Choose a challenge that is appropriate for your skill level.
  • Solve the challenge using a data structure that is appropriate for the problem.
  • Review your solution and make sure that it is correct and efficient.
  • Move on to more difficult challenges as you improve your skills.
Read 'Data Structures and Algorithms in Java' by Michael T. Goodrich and Roberto Tamassia
This book provides a comprehensive overview of data structures and algorithms, with a focus on Java implementations. Reading this book will help you deepen your understanding of the concepts covered in the course.
Show steps
  • Read the book cover-to-cover.
  • Take notes and highlight important passages.
  • Work through the practice exercises at the end of each chapter.
Contribute to Open Source Data Structures Projects
Contributing to open source data structures projects will allow you to learn from others, improve your coding skills, and give back to the community.
Browse courses on Open Source
Show steps
  • Find an open source data structures project that you are interested in contributing to.
  • Read the project documentation to learn about the project and its goals.
  • Identify an area where you can contribute.
  • Make your contribution to the project.
  • Submit a pull request to the project's repository.

Career center

Learners who complete Data Structures will develop knowledge and skills that may be useful to these careers:
Data Scientist
Data Scientists know how to design the right data structures for any project. This course offers a great foundation for understanding how to do that. It covers a wide range of data structures used in data science, such as arrays, linked lists, queues, stacks, trees, and graphs. You'll also learn how to implement these data structures in your own code. By taking this course, you'll be well-prepared to handle the data science challenges you'll face on the job.
Machine Learning Engineer
Machine Learning Engineers design, develop, and test machine learning models. They need to have a solid understanding of data structures in order to build models that are efficient and accurate. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Systems Analyst
Systems Analysts design, develop, and maintain computer systems. They need to have a solid understanding of data structures in order to be able to design and implement efficient systems. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Software Architect
Software Architects design and develop software systems. They need to have a solid understanding of data structures in order to be able to design and implement efficient systems. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Project Manager
Project Managers are responsible for planning, executing, and closing projects. They need to have a solid understanding of data structures in order to be able to manage projects efficiently. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical models to analyze financial data. They need to have a solid understanding of data structures in order to be able to organize and analyze large financial datasets efficiently. A course in financial data structures can give you the knowledge and skills you need to launch a successful career in quantitative finance.
Business Analyst
A Business Analyst is responsible for analyzing business requirements and developing solutions that meet the needs of the business. They need to have a solid understanding of data structures in order to be able to organize and analyze large amounts of data. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Chief Technology Officer
Chief Technology Officers are responsible for overseeing the technology strategy and operations of an organization. They need to have a solid understanding of data structures in order to be able to make informed decisions about technology investments. A course in data structures can give you the knowledge and skills you need to launch a successful career in technology leadership.
Product Manager
Product Managers are responsible for planning, developing, and launching new products. They need to have a solid understanding of data structures in order to be able to manage the development process efficiently. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Database Administrator
Database Administrators design, implement, and maintain databases. They need to have a solid understanding of data structures in order to create databases that are efficient and scalable. This course can help you build the foundation you need to succeed in this role. It offers a thorough overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. Along the way, you'll learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Data Analyst
Data Analysts collect, clean, and analyze data in order to help businesses make better decisions. They need to have a solid understanding of data structures in order to be able to organize and analyze large datasets efficiently. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
User Experience Designer
User Experience Designers design and evaluate user interfaces for websites, mobile apps, and other products. They need to have a solid understanding of data structures in order to be able to design interfaces that are efficient and user-friendly. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals, training materials, and white papers. This course can help you build the foundation you need to succeed in this role. It offers a comprehensive overview of data structures, including arrays, linked lists, stacks, queues, trees, and graphs. You'll also learn how to implement these data structures in your own code, which will give you a valuable edge in the job market.
Software Engineer
A software engineer designs, develops, and tests software applications. This course may be useful for those who want to pursue a career in software engineering, as it offers a foundation in data structures. Software engineers need to have a deep understanding of data structures in order to design and implement efficient software applications.
Information Security Analyst
A career in information security analysis may be more attainable with the knowledge gained in this course. The course emphasizes understanding the costs and trade-offs of using data structures. This could help an information security analyst evaluate the effectiveness and efficiency of a company's data security operations.

Reading list

We've selected 20 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Data Structures.
Widely-used textbook on algorithms, covering the design, analysis, and implementation of various algorithms. Ideal companion to the course, provides a comprehensive treatment of essential foundations.
Python-specific version of the authors' Java book, and it covers all of the essential data structures and algorithms in Python.
Provides a comprehensive introduction to data structures and algorithms, written specifically for Java programmers. It covers all of the essential data structures, such as arrays, linked lists, stacks, queues, trees, and graphs, and it also discusses a variety of algorithms for sorting, searching, and manipulating data.
C++-specific version of the authors' Java book, and it covers all of the essential data structures and algorithms in C++.
Comprehensive introduction to data structures and algorithms, written for both C and C++ programmers. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
Comprehensive introduction to data structures and algorithms, written specifically for Swift programmers. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
Classic textbook on algorithms, and it provides a comprehensive overview of the field. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
Comprehensive introduction to algorithms, written for undergraduate students. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
Comprehensive introduction to data structures and algorithm analysis, written specifically for Java programmers. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
Comprehensive introduction to data structures and algorithms, written specifically for JavaScript programmers. It covers a wide range of topics, including sorting, searching, graph algorithms, and dynamic programming.
A classic textbook on algorithms, written in a clear and engaging style. Provides rigorous coverage of essential algorithm techniques, with a focus on Java implementations.
A comprehensive series of books that cover a wide range of algorithms and data structures, with a focus on Java implementations. Provides in-depth coverage and numerous exercises.
An in-depth guide to algorithm design techniques, with a focus on practical problem-solving. Provides valuable insights and strategies for developing efficient and effective algorithms.
A comprehensive and classic textbook that provides a rigorous treatment of data structures and algorithms in C++. Well-suited for students with a strong mathematical background.
A classic textbook that introduces data structures and algorithms in the context of object-oriented programming using Java. Provides a solid foundation for designing and implementing data-intensive applications.
A practical and engaging introduction to algorithms, written in a conversational style. Provides intuitive explanations and real-world examples to make learning algorithms accessible.
A comprehensive guide to data structures and algorithms using JavaScript, suitable for students with a strong programming foundation. Provides a practical and modern approach.
Collection of coding interview questions and solutions. It valuable resource for anyone preparing for a job interview in the tech industry.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser