We may earn an affiliate commission when you visit our partners.
Patrick Ester

Code and run your first C++ program about data structures and algorithms in minutes without installing anything!

This course is designed for learners familiar with C++ basics and object-oriented programming. It provides a solid foundation of not just C++, but core data structures and algorithms topics that can be transferred to other languages. The modules in this course cover non-linear data structures like heaps, hash tables (and maps), graphs, and sets.

Read more

Code and run your first C++ program about data structures and algorithms in minutes without installing anything!

This course is designed for learners familiar with C++ basics and object-oriented programming. It provides a solid foundation of not just C++, but core data structures and algorithms topics that can be transferred to other languages. The modules in this course cover non-linear data structures like heaps, hash tables (and maps), graphs, and sets.

To allow for a truly hands-on, self-paced learning experience, this course is video-free. Assignments contain short explanations with images and runnable code examples with suggested edits to explore code examples further, building a deeper understanding by doing. You'll benefit from instant feedback from a variety of assessment items along the way, gently progressing from quick understanding checks (multiple choice, fill in the blank, and un-scrambling code blocks) to small, approachable coding exercises that take minutes instead of hours.

Enroll now

What's inside

Syllabus

Heaps
Welcome to Week 1 of the Non-Linear Data Structures course. You will learn about heaps, priority-queues based on a heap, as well as sorting heaps.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Assumes familiarity with C++ basics and object-oriented programming, allowing learners to dive into advanced data structures more quickly
Focuses on non-linear data structures like heaps, hash tables, graphs, and sets, which are essential for advanced algorithm design and problem-solving
Uses C++, a language widely used in performance-critical applications, game development, and systems programming, providing practical skills for various domains
Assignments contain runnable code examples with suggested edits, encouraging active learning and deeper understanding through experimentation
Offers instant feedback through multiple choice, fill in the blank, and code unscrambling exercises, reinforcing concepts and identifying areas for improvement
Requires no installation, which lowers the barrier to entry and allows learners to start coding and experimenting with data structures immediately

Save this course

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

Reviews summary

C++ non-linear data structures fundamentals

According to students, this course offers a solid introduction to non-linear C++ data structures. Many found the hands-on coding exercises and runnable examples highly beneficial for understanding heaps, hash tables, graphs, and sets. The video-free, self-paced format worked well for some, though others preferred video lectures. A key point raised is the need for strong prior C++ and OOP knowledge; it's not suitable for beginners. While generally positive, some reviewers mentioned minor issues. Overall, the practical coding aspects are a significant plus.
Text/code based format is self-paced.
"I liked the video-free format, I could just read and code at my own speed."
"Missed having video lectures to explain some complex ideas visually."
"The all-text format can feel a bit dry compared to video courses."
Solid introduction to core non-linear topics.
"The course covered heaps, hash tables, graphs, and sets very clearly."
"I feel like I have a much better understanding of how these data structures work now."
"Good foundational material on non-linear data structures."
Excellent practice with code examples.
"The runnable code examples and hands-on exercises really helped solidify the concepts."
"I loved being able to tweak the code examples right there and see the results instantly."
"The coding assignments were the most valuable part for me; they were challenging but doable."
Occasional errors or platform glitches noted.
"Found a few minor errors in the text explanations or code snippets."
"Sometimes had issues with the coding environment platform."
"Nothing major, but there are small things that could be polished."
Assumes strong C++ and OOP background.
"This course is NOT for beginners in C++. You need to be very comfortable with OOP."
"They mention prerequisites, but you really need to know C++ quite well before starting."
"If you are new to C++, this course will be very difficult to follow."

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 C++: Non-Linear Data Structures with these activities:
Review C++ Fundamentals
Strengthen your understanding of C++ fundamentals, including pointers and memory management, to better grasp the implementation of data structures.
Show steps
  • Review basic C++ syntax and data types.
  • Practice writing classes and objects.
  • Work through examples of pointer usage.
Review 'Effective Modern C++'
Improve your C++ coding skills with a guide to modern C++ features and best practices, enhancing your ability to implement efficient data structures.
Show steps
  • Read the chapters on move semantics and smart pointers.
  • Study the examples of lambda expressions and concurrency.
  • Apply the learned techniques to your data structure implementations.
Review 'Data Structures and Algorithms in C++'
Deepen your understanding of data structures and algorithms with a comprehensive textbook that provides detailed explanations and C++ implementations.
Show steps
  • Read the chapters related to heaps and hash tables.
  • Study the graph algorithms and set implementations.
  • Work through the code examples provided in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement Heap Operations
Reinforce your understanding of heaps by implementing common operations like insertion, deletion, and heapify from scratch.
Show steps
  • Implement a min-heap data structure.
  • Write functions for insert and delete operations.
  • Test the heap implementation with various inputs.
Create a Blog Post on Hash Table Collision Resolution
Deepen your understanding of hash tables by researching and writing a blog post explaining different collision resolution techniques.
Show steps
  • Research different collision resolution methods.
  • Write a clear and concise explanation of each method.
  • Include diagrams and examples to illustrate the concepts.
  • Publish the blog post on a platform like Medium.
Build a Graph Traversal Visualizer
Solidify your knowledge of graph traversal algorithms by building a visualizer that demonstrates breadth-first search (BFS) and depth-first search (DFS).
Show steps
  • Design a user interface for the visualizer.
  • Implement BFS and DFS algorithms in C++.
  • Integrate the algorithms with the visualizer.
  • Test the visualizer with different graph structures.
Contribute to a Data Structures Library
Gain practical experience and contribute to the open-source community by contributing to a C++ data structures library.
Show steps
  • Find an open-source C++ data structures library on GitHub.
  • Identify a bug or feature request to work on.
  • Implement the fix or feature and submit a pull request.
  • Respond to feedback and revise your code as needed.

Career center

Learners who complete C++: Non-Linear Data Structures will develop knowledge and skills that may be useful to these careers:
Algorithm Developer
An algorithm developer focuses on creating and improving algorithms, using a strong understanding of data structures. This course is directly relevant because it explores non-linear data structures and associated algorithms. The modules covering heaps, hash tables, graphs, and sets equip learners with the tools needed to develop complex algorithms. This course helps you understand how these structures can be translated into efficient program code, making it valuable for an algorithm developer.
Software Engineer
A software engineer builds applications and systems, often working with complex data. This course directly aligns with the data structures and algorithms knowledge essential for software engineering tasks. The focus on non-linear data structures helps you analyze performance and choose optimal structures such as heaps, hash tables, graphs, and sets to improve efficiency. By coding and running C++ examples and working on projects, this course helps you build a foundation in the practical use of data structures, necessary for becoming a software engineer.
Back-End Developer
A back end developer builds and maintains the server-side logic and databases of applications. The focus on data structures in this course makes it particularly valuable. The modules covering hash tables and graphs directly apply to how back end systems organize and retrieve data. This course provides an opportunity to practice implementing these data structures in C++, and this practical knowledge can greatly benefit a future back end developer.
Database Engineer
A database engineer designs, builds, and maintains databases. This course helps provide useful knowledge of data structures, specifically the modules on hash tables and sets. Understanding these data structures helps a database engineer perform their role more effectively. By providing practical coding experience in C++, this course will help you with writing efficient database access code and algorithms.
Systems Programmer
A systems programmer works on the low-level components of operating systems and software. Knowledge of non-linear data structures is crucial for optimizing performance, and this course provides hands-on experience in their implementation. This course, with its focus on heaps, hash tables, graphs, and sets, may be useful and can help a systems programmer with choosing the right tools. Working with C++ code examples helps reinforce the connection between theory and practice, which is essential for a systems programmer.
Computer Science Teacher
A computer science teacher educates students in computer science fields and needs a strong foundational understanding of core concepts. This course would be helpful for you since it provides a strong foundation in essential data structures and algorithms. The course’s thorough treatment of heaps, hash tables, graphs and sets would help a teacher explain these concepts clearly. The practical coding examples in C++ will also aid a computer science teacher who needs to demonstrate with actual working code.
Embedded Systems Engineer
An embedded systems engineer designs and develops software for embedded devices. This role might require a strong grasp of data structures and algorithms, and this course may provide helpful knowledge. The modules focusing on heaps, hash tables and sets are highly relevant to embedded systems. The course’s hands-on approach with C++ is a good fit for this kind of work and will benefit a future embedded systems engineer.
Data Scientist
A data scientist analyzes and interprets large datasets using various tools and techniques. While this role typically requires an advanced degree, this course may be useful for understanding how data is organized and processed. The course's modules on hash tables and graphs can help a data scientist better structure and analyze data. The focus on coding examples in C++ will help you in the use of this language, which can be valuable when working with large datasets.
Game Developer
Game developers create video games, often working with large amounts of data and complex algorithms. This course may be beneficial because it introduces graph data structures and algorithms, which are important for game programming. The coverage of topics such as heaps, hash tables, and graph traversal would be helpful and enhance a game developer’s repertoire. The focus on hands-on coding with C++ in this course will help you build skills in a language commonly used in game development.
Machine Learning Engineer
A machine learning engineer builds and deploys machine learning models, which often requires efficient data handling. This course may be useful as it covers data structures, particularly graphs, which are very important in machine learning and neural networks. The course's hands-on approach to working with C++ and coding examples will strengthen your ability to implement algorithms, beneficial for a machine learning engineer.
Research Scientist
A research scientist conducts research in a specific area, often requiring advanced understanding of algorithms and data structures. Although this role typically requires an advanced degree, this course may be useful because it provides a solid foundation in data structures that might be applicable to research in areas such as computer science. The course's focus on heaps, hash tables, graphs, and sets may be beneficial for a research scientist.
Robotics Engineer
A robotics engineer designs, builds, and programs robots. This role often involves complex algorithms and data structures. This course may be useful because it introduces crucial data structures such as graphs, which are used for navigation and pathfinding. The focus on C++ coding in this course will also help you implement control systems. The hands-on approach of this course might be beneficial for an aspiring robotics engineer.
Data Analyst
A data analyst interprets data to identify trends and patterns which help inform business decisions. This course may be useful by offering helpful insight into how data is structured, processed, and organized. The focus on hash tables can be especially helpful for a data analyst. The coding examples in C++ will assist anyone who wishes to work directly with data and algorithms.
Quantitative Analyst
A quantitative analyst, often called a quant, uses mathematical and statistical methods to analyze financial markets. This course may be useful because it discusses data structures, such as sets and hash tables, that can help a quantitative analyst. The C++ skills developed in this course will help you build efficient data handling and analysis tools. The course's focus on practical code helps you understand the implementation of these structures, an important skill for a quantitative analyst.
Technical Consultant
A technical consultant advises clients on technology-related business decisions. This course may be useful because it provides a good overview of data structures and algorithms. The in-depth focus on topics such as hash tables and graphs will be helpful for a technical consultant when evaluating different technological options for their clients. The practical coding experience in C++ will also be beneficial.

Reading list

We've selected two 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 C++: Non-Linear Data Structures.
Provides a comprehensive overview of data structures and algorithms, with a focus on C++ implementations. It covers topics such as heaps, hash tables, graphs, and sets in detail, aligning perfectly with the course syllabus. It serves as a valuable reference for understanding the theoretical concepts and practical applications of non-linear data structures. This book is commonly used as a textbook in undergraduate computer science courses.
Focuses on modern C++ features (C++11/14) and best practices. While not directly about data structures, it helps you write more efficient and safer C++ code, which is crucial for implementing complex data structures. It provides insights into topics like move semantics, smart pointers, and lambda expressions, which can improve the performance and maintainability of your data structure implementations. This book is more valuable as additional reading than it is as a current reference.

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