Computer Science Programming Fundamentals

Data Structures and Algorithms

Build efficient, reliable software by learning how to store, organise, and process data with confidence

Data Structures and Algorithms logo
Quick Course Facts
18
Self-paced, Online, Lessons
18
Videos and/or Narrated Presentations
5.9
Approximate Hours of Course Media
About the Data Structures and Algorithms Course

This Data Structures and Algorithms course is designed for learners in Computer Science who want to think more clearly about how programs work and how to make them faster, more reliable, and easier to maintain. You will build a strong foundation in the core ideas that help you build efficient, reliable software by learning how to store, organise, and process data with confidence.

Master Data Structures And Algorithms For Smarter Problem Solving

  • Learn the essential concepts behind Computer Science performance, design, and optimisation
  • Develop practical skills in Data Structures and Algorithms that support better coding decisions
  • Understand how to build efficient, reliable software by learning how to store, organise, and process data with confidence
  • Strengthen your problem-solving ability through clear examples, patterns, and applied reasoning

A practical introduction to the tools and techniques that help software handle data and solve problems effectively.

Throughout the course, you will explore the foundations of why Data Structures and Algorithms matter, then move into performance analysis with Big-O notation so you can compare solutions with confidence. From arrays, dynamic arrays, linked lists, stacks, queues, and recursion to searching, sorting, and hash tables, each topic is introduced in a way that connects theory to real programming decisions.

You will also study trees, binary search trees, balanced design, heaps, graphs, graph traversal, greedy methods, divide and conquer, and common algorithm design patterns. These lessons are built to help you recognise when a structure or strategy is appropriate, and how to apply it in a clean, efficient way. By the end, you will be able to approach coding challenges with a stronger Computer Science mindset, make better implementation choices, and write software that is more organised, dependable, and performant.

Course Lessons

Full lesson breakdown

Lessons are organized by topic area and each includes descriptive copy for search visibility and student clarity.

Foundations and motivation

1 lesson

This lesson explains why Data Structures and Algorithms matter in real software work. You will see how the way data is stored and processed affects speed, memory use, reliability, and maintainability.…

Complexity analysis

1 lesson

Lesson 2: Measuring Performance with Big-O Notation

20 min
In this lesson, you will learn how to read and use Big-O notation to describe how an algorithm’s runtime or memory use grows as data gets larger. We focus on the practical meaning of constant, logarit…

Linear storage structures

1 lesson

Lesson 3: Arrays and Dynamic Arrays

18 min
Arrays are one of the most important linear storage structures in programming. In this lesson, learners see how arrays store values in contiguous memory, why that makes indexed access fast, and where …

Linked structure fundamentals

1 lesson

Lesson 4: Linked Lists and Pointer-Based Organisation

20 min
Linked lists are a foundational pointer-based data structure that store values in separate nodes connected by references. This lesson explains how singly and doubly linked lists work, why they differ …

Restricted-access collections

1 lesson

Lesson 5: Stacks and Queues

18 min
Stacks and queues are two of the most important restricted-access collections in computer science. They are simple to use, easy to reason about, and appear in real software everywhere: undo features, …

Recursive thinking

1 lesson

Lesson 6: Recursion and Problem Decomposition

20 min
Recursion is a way to solve a problem by breaking it into smaller versions of the same problem. In this lesson, learners will build a clear mental model of recursive thinking, identify the two essenti…

Finding data efficiently

1 lesson

Lesson 7: Searching Techniques

18 min
This lesson introduces the main ways to search for data efficiently, from simple linear search to faster approaches that rely on sorted data and tree-based structures. You will learn when each method …

Ordering data

1 lesson

Lesson 8: Sorting Algorithms: Comparison-Based Approaches

22 min
This lesson introduces the main comparison-based sorting algorithms and explains how they differ in speed, memory use, and practical behavior. You will learn the core ideas behind selection sort , bub…

Fast access by key

1 lesson

Lesson 9: Hash Tables and Efficient Lookup

20 min
Hash tables are a fast way to store and retrieve values by a key, such as a user ID, product code, or email address. In this lesson, you will learn how hash tables work at a practical level: how a has…

Hierarchical data

1 lesson

Lesson 10: Trees: Structure, Terminology, and Traversal

22 min
This lesson introduces trees as a core hierarchical data structure used to represent nested relationships such as file systems, organisation charts, menus, and parsed expressions. You will learn the e…

Ordered tree operations

1 lesson

Lesson 11: Binary Search Trees and Balanced Design

22 min
Binary search trees are a powerful way to keep data ordered so you can search, insert, and traverse efficiently. In this lesson, you will learn how a binary search tree stores values, how common opera…

Selecting highest or lowest priority

1 lesson

Lesson 12: Heaps and Priority Queues

18 min
Heaps are specialised tree-based structures designed to make fast priority decisions . In this lesson, you will learn how heaps support priority queues , why they are useful when you need repeated acc…

Networks and relationships

1 lesson

Lesson 13: Graphs and Graph Representations

22 min
Graphs model networks and relationships between things, making them ideal for problems like routing, social connections, task dependencies, and recommendation systems. In this lesson, you will learn h…

Exploring connected systems

1 lesson

Lesson 14: Graph Traversal: BFS and DFS

22 min
Graphs model connected systems such as maps, social networks, dependency chains, and routing paths. In this lesson, you will learn how Breadth-First Search (BFS) and Depth-First Search (DFS) traverse …

Making efficient choices

1 lesson

Lesson 15: Greedy Algorithms and Local Optimisation

18 min
Greedy algorithms solve a problem by making the best immediate choice at each step, with the aim of reaching a good overall result. In this lesson, you'll learn how local optimisation works, when gree…

Breaking problems into parts

1 lesson

Lesson 16: Divide and Conquer Strategies

20 min
Divide and conquer is a problem-solving strategy that tackles a large task by splitting it into smaller, manageable parts, solving each part, and combining the results. In this lesson, learners will s…

Choosing the right approach

1 lesson

Lesson 17: Algorithm Design Patterns in Practice

20 min
In this lesson, you will learn how to choose an algorithm design pattern based on the shape of the problem, not just the syntax of a coding language. You will compare common approaches such as brute f…

Integration and application

1 lesson

Lesson 18: Putting It All Together: Problem Solving and Review

18 min
This lesson brings the course together by showing how to choose the right data structure , match it to an algorithm , and reason about trade-offs before writing code. You will work through a practical…
About Your Instructor
Professor Peter Lambert

Professor Peter Lambert

Professor Peter Lambert guides this AI-built Virversity course with a clear, practical teaching style.