Loved by learners at thousands of companies
Recognize Popular Data Structures and AlgorithmsMost computer programs are based on a few data structures and algorithms. Learn about what’s behind the hood of most of your computer interactions in this four-hour course! You’ll familiarize yourself with some of the most common data structures: linked lists, stacks, queues, and trees. You’ll also implement popular algorithms, such as Depth First Search, Breadth First Search, Bubble sort, Merge sort, and Quicksort.
Learn to Spot Data Structures and Algorithms in Everyday LifeYou'll practice applying data structures and algorithms to decks of cards, music playlists, international dishes, and stacks of books. You’ll walk away with the ability to recognize common data structures and algorithms, and implement them in day-to-day applications!
Analyze the Efficiency of AlgorithmsAlong the way, you’ll stop to analyze popular algorithms in terms of their efficiency. You’ll come to grips with “Big O Notation”, the industry standard for describing the complexity of an algorithm.
Sharpen Your Python Programming KnowledgeBeing well-versed with data structures and algorithms means being able to take everyday problems and solve them using efficient code. You’ll be practising this in Python, you’ll take these fundamental and transferable skills with you to any programming language.
Work with Linked Lists and Stacks and Understand Big O notationFree
You’ll begin by learning what algorithms and data structures are. You will discover two data structures: linked lists and stacks. You will then learn how to calculate the complexity of an algorithm by using Big O Notation.Welcome!50 xpImplementing a linked list100 xpInserting a node at the beginning of a linked list100 xpRemoving the first node from a linked list100 xpUnderstanding Big O Notation50 xpBig O Notation: true or false?100 xpPracticing with Big O Notation100 xpWorking with stacks50 xpImplementing a Stack with the push method100 xpImplementing the pop method for a stack100 xpUsing Python's LifoQueue100 xp
Queues, Hash Tables, Trees, Graphs, and Recursion
This second chapter will teach you the basics of queues, hash tables, trees, and graphs data structures. You will also discover what recursion is.Working with queues50 xpImplementing a queue for printer tasks100 xpUsing Python's SimpleQueue100 xpHash tables50 xpCorrecting bugs in a dictionary100 xpIterating over a nested dictionary100 xpTrees and graphs50 xpCorrecting bugs in a tree implementation100 xpBuilding a weighted graph100 xpUnderstanding Recursion50 xpFibonacci sequence100 xpTowers of Hanoi100 xp
This chapter will focus on searching algorithms, like linear search, binary search, depth first search, and breadth first search. You will also study binary search trees and how to search within them.Linear Search and Binary Search50 xpImplementing binary search100 xpBinary search using recursion100 xpBinary Search Tree (BST)50 xpInserting a node into a binary search tree100 xpFinding the minimum node of a BST100 xpDepth First Search (DFS)50 xpPrinting book titles in alphabetical order100 xpUsing pre-order traversal with Polish notation100 xpImplementing DFS for graphs100 xpBreadth First Search (BFS)50 xpUsing breadth first search in binary trees50 xpFinding a graph vertex using BFS100 xp
This chapter will teach you some sorting algorithms, like bubble sort, selection sort, insertion sort, merge sort, and quicksort.Bubble Sort50 xpSorting numbers using bubble sort100 xpCorrecting a bug in the bubble sort algorithm100 xpSelection Sort and Insertion Sort50 xpCoding selection sort100 xpSorting cards using insertion sort100 xpMerge sort50 xpMerge sort: true or false?100 xpCorrecting a bug in the merge sort algorithm100 xpQuicksort50 xpSorting numbers using quicksort100 xpImplementing the quicksort algorithm100 xpCongratulations!50 xp
PrerequisitesWriting Functions in Python
Miriam is a freelance Software Engineer with 15+ years of experience. She is focused on analyzing, designing, and developing software applications. She also collaborates with the UOC University supervising Bachelor theses. Miriam loves programming and experimenting with different technologies. She is passionate about databases and enjoys playing with data. She holds a Master of Science Degree in Computer Engineering.