Simplified intro to algorithms: Grokking Algorithms . Advanced algorithms and data structures: Data Structures and Algorithms in Python . The second one is written by a bunch of doctors. I feel like their coding style is kind of too C/Java-esque and not entirely pythonic at times, but the DSA part is really good. Answer from patryk-tech on reddit.com
🌐
Reddit
reddit.com › r/learnpython › what is the best course/book for data structures & algorithms using python?
r/learnpython on Reddit: What is the best course/book for data structures & Algorithms using Python?
August 24, 2022 -

Hey, just learning Python as my first programming language.

Reading Python Crash Course, Automate the boring stuff and learn code by solving problems (python) and then doing 100 day udemy project challenge.

I understand that I need solid knowledge in data structs/algor for interviews/leetcode/life

Anyone has good suggestions? preferably that is easy to follow/read.

Thank you!

🌐
Reddit
reddit.com › r/python › the complete data structures and algorithms course in python
r/Python on Reddit: The Complete Data Structures and Algorithms Course in Python
March 6, 2021 -

Data Structures and Algorithms from Zero to Hero and Crack Top Companies 100+ Interview questions (Python Coding)

https://drive.google.com/drive/folders/1fd70NNgTBRugqX73s4qvVR9RNPpF9qlH?usp=sharing

Section 1 - Introduction

  • What are Data Structures?

  • What is an algorithm?

  • Why are Data Structures And Algorithms important?

  • Types of Data Structures

  • Types of Algorithms

Section 2 - Recursion

  • What is Recursion?

  • Why do we need recursion?

  • How does Recursion work?

  • Recursive vs Iterative Solutions

  • When to use/avoid Recursion?

  • How to write Recursion in 3 steps?

  • How to find Fibonacci numbers using Recursion?

Section 3 - Cracking Recursion Interview Questions

  • Question 1 - Sum of Digits

  • Question 2 - Power

  • Question 3 - Greatest Common Divisor

  • Question 4 - Decimal To Binary

Section 4 - Bonus CHALLENGING Recursion Problems (Exercises)

  • power

  • factorial

  • productofArray

  • recursiveRange

  • fib

  • reverse

  • isPalindrome

  • someRecursive

  • flatten

  • captalizeFirst

  • nestedEvenSum

  • capitalizeWords

  • stringifyNumbers

  • collectStrings

Section 5 - Big O Notation

  • Analogy and Time Complexity

  • Big O, Big Theta and Big Omega

  • Time complexity examples

  • Space Complexity

  • Drop the Constants and the non dominant terms

  • Add vs Multiply

  • How to measure the codes using Big O?

  • How to find time complexity for Recursive calls?

  • How to measure Recursive Algorithms that make multiple calls?

Section 6 - Top 10 Big O Interview Questions (Amazon, Facebook, Apple and Microsoft)

  • Product and Sum

  • Print Pairs

  • Print Unordered Pairs

  • Print Unordered Pairs 2 Arrays

  • Print Unordered Pairs 2 Arrays 100000 Units

  • Reverse

  • O(N)  Equivalents

  • Factorial Complexity

  • Fibonacci Complexity

  • Powers of 2

Section 7 - Arrays

  • What is an Array?

  • Types of Array

  • Arrays in Memory

  • Create an Array

  • Insertion Operation

  • Traversal Operation

  • Accessing an element of Array

  • Searching for an element in Array

  • Deleting an element from Array

  • Time and Space complexity of One Dimensional Array

  • One Dimensional Array Practice

  • Create Two Dimensional Array

  • Insertion - Two Dimensional Array

  • Accessing an element of Two Dimensional Array

  • Traversal - Two Dimensional Array

  • Searching for an element in Two Dimensional Array

  • Deletion - Two Dimensional Array

  • Time and Space complexity of Two Dimensional Array

  • When to use/avoid array

Section 8 - Python Lists

  • What is a List? How to create it?

  • Accessing/Traversing a list

  • Update/Insert a List

  • Slice/ from a List

  • Searching for an element in a List

  • List Operations/Functions

  • Lists and strings

  • Common List pitfalls and ways to avoid them

  • Lists vs Arrays

  • Time and Space Complexity of List

  • List Interview Questions

Section 9 - Cracking Array/List Interview Questions (Amazon, Facebook, Apple and Microsoft)

  • Question 1 - Missing Number

  • Question 2 - Pairs

  • Question 3 - Finding a number in an Array

  • Question 4 - Max product of two int

  • Question 5 - Is Unique

  • Question 6 - Permutation

  • Question 7 - Rotate Matrix

Section 10 - CHALLENGING Array/List Problems (Exercises)

  • Middle Function

  • 2D Lists

  • Best Score

  • Missing Number

  • Duplicate Number

  • Pairs

Section 11 - Dictionaries

  • What is a Dictionary?

  • Create a Dictionary

  • Dictionaries in memory

  • Insert /Update an element in a Dictionary

  • Traverse through a Dictionary

  • Search for an element in a Dictionary

  • Delete / Remove an element from a Dictionary

  • Dictionary Methods

  • Dictionary operations/ built in functions

  • Dictionary vs List

  • Time and Space Complexity of a Dictionary

  • Dictionary Interview Questions

Section 12 - Tuples

  • What is a Tuple? How to create it?

  • Tuples in Memory / Accessing an element of Tuple

  • Traversing a Tuple

  • Search for an element in Tuple

  • Tuple Operations/Functions

  • Tuple vs List

  • Time and Space complexity of Tuples

  • Tuple Questions

Section 13 - Linked List

  • What is a Linked List?

  • Linked List vs Arrays

  • Types of Linked List

  • Linked List in the Memory

  • Creation of Singly Linked List

  • Insertion in Singly Linked List in Memory

  • Insertion in Singly Linked List Algorithm

  • Insertion Method in Singly Linked List

  • Traversal of Singly Linked List

  • Search for a value in Single Linked List

  • Deletion of node from Singly Linked List

  • Deletion Method in Singly Linked List

  • Deletion of entire Singly Linked List

  • Time and Space Complexity of Singly Linked List

Section 14 - Circular Singly Linked List

  • Creation of Circular Singly Linked List

  • Insertion in Circular Singly Linked List

  • Insertion Algorithm in Circular Singly Linked List

  • Insertion method in Circular Singly Linked List

  • Traversal of Circular Singly Linked List

  • Searching a node in Circular Singly Linked List

  • Deletion of a node from Circular Singly Linked List

  • Deletion Algorithm in Circular Singly Linked List

  • Method in Circular Singly Linked List

  • Deletion of entire Circular Singly Linked List

  • Time and Space Complexity of Circular Singly Linked List

Section 15 - Doubly Linked List

  • Creation of Doubly Linked List

  • Insertion in Doubly Linked List

  • Insertion Algorithm in Doubly Linked List

  • Insertion Method in Doubly Linked List

  • Traversal of Doubly Linked List

  • Reverse Traversal of Doubly Linked List

  • Searching for a node in Doubly Linked List

  • Deletion of a node in Doubly Linked List

  • Deletion Algorithm in Doubly Linked List

  • Deletion Method in Doubly Linked List

  • Deletion of entire Doubly Linked List

  • Time and Space Complexity of Doubly Linked List

Section 16 - Circular Doubly Linked List

  • Creation of Circular Doubly Linked List

  • Insertion in Circular Doubly Linked List

  • Insertion Algorithm in Circular Doubly Linked List

  • Insertion Method in Circular Doubly Linked List

  • Traversal of Circular Doubly Linked List

  • Reverse Traversal of Circular Doubly Linked List

  • Search for a node in Circular Doubly Linked List

  • Delete a node from Circular Doubly Linked List

  • Deletion Algorithm in Circular Doubly Linked List

  • Deletion Method in Circular Doubly Linked List

  • Entire Circular Doubly Linked List

  • Time and Space Complexity of Circular Doubly Linked List

  • Time Complexity of Linked List vs Arrays

Section 17 - Cracking Linked List Interview Questions (Amazon, Facebook, Apple and Microsoft)

  • Linked List Class

  • Question 1 - Remove Dups

  • Question 2 - Return Kth to Last

  • Question 3 - Partition

  • Question 4 - Sum Linked Lists

  • Question 5 - Intersection

Section 18 - Stack

  • What is a Stack?

  • Stack Operations

  • Create Stack using List without size limit

  • Operations on Stack using List (push, pop, peek, isEmpty, )

  • Create Stack with limit (pop, push, peek, isFull, isEmpty, )

  • Create Stack using Linked List

  • Operation on Stack using Linked List (pop, push, peek, isEmpty, )

  • Time and Space Complexity of Stack using Linked List

  • When to use/avoid Stack

  • Stack Quiz

Section 19 - Queue

  • What is Queue?

  • Queue using Python List - no size limit

  • Queue using Python List - no size limit , operations (enqueue, dequeue, peek)

  • Circular Queue - Python List

  • Circular Queue - Python List, Operations (enqueue, dequeue, peek, )

  • Queue - Linked List

  • Queue - Linked List, Operations (Create, Enqueue)

  • Queue - Linked List, Operations (Dequeue(), isEmpty, Peek)

  • Time and Space complexity of Queue using Linked List

  • List vs Linked List Implementation

  • Collections Module

  • Queue Module

  • Multiprocessing module

Section 20 - Cracking Stack and Queue Interview Questions (Amazon,Facebook, Apple, Microsoft)

  • Question 1 - Three in One

  • Question 2 - Stack Minimum

  • Question 3 - Stack of Plates

  • Question 4 - Queue via Stacks

  • Question 5 - Animal Shelter

Section 21 - Tree / Binary Tree

  • What is a Tree?

  • Why Tree?

  • Tree Terminology

  • How to create a basic tree in Python?

  • Binary Tree

  • Types of Binary Tree

  • Binary Tree Representation

  • Create Binary Tree (Linked List)

  • PreOrder Traversal Binary Tree (Linked List)

  • InOrder Traversal Binary Tree (Linked List)

  • PostOrder Traversal Binary Tree (Linked List)

  • LevelOrder Traversal Binary Tree (Linked List)

  • Searching for a node in Binary Tree (Linked List)

  • Inserting a node in Binary Tree (Linked List)

  • Delete a node from Binary Tree (Linked List)

  • Delete entire Binary Tree (Linked List)

  • Create Binary Tree (Python List)

  • Insert a value Binary Tree (Python List)

  • Search for a node in Binary Tree (Python List)

  • PreOrder Traversal Binary Tree (Python List)

  • InOrder Traversal Binary Tree (Python List)

  • PostOrder Traversal Binary Tree (Python List)

  • Level Order Traversal Binary Tree (Python List)

  • Delete a node from Binary Tree (Python List)

  • Entire Binary Tree (Python List)

  • Linked List vs Python List Binary Tree

Section 22 - Binary Search Tree

  • What is a Binary Search Tree? Why do we need it?

  • Create a Binary Search Tree

  • Insert a node to BST

  • Traverse BST

  • Search in BST

  • Delete a node from BST

  • Delete entire BST

  • Time and Space complexity of BST

Section 23 - AVL Tree

  • What is an AVL Tree?

  • Why AVL Tree?

  • Common Operations on AVL Trees

  • Insert a node in AVL (Left Left Condition)

  • Insert a node in AVL (Left Right Condition)

  • Insert a node in AVL (Right Right Condition)

  • Insert a node in AVL (Right Left Condition)

  • Insert a node in AVL (all together)

  • Insert a node in AVL (method)

  • Delete a node from AVL (LL, LR, RR, RL)

  • Delete a node from AVL (all together)

  • Delete a node from AVL (method)

  • Delete entire AVL

  • Time and Space complexity of AVL Tree

Section 24 - Binary Heap

  • What is Binary Heap? Why do we need it?

  • Common operations (Creation, Peek, sizeofheap) on Binary Heap

  • Insert a node in Binary Heap

  • Extract a node from Binary Heap

  • Delete entire Binary Heap

  • Time and space complexity of Binary Heap

Section 25 - Trie

  • What is a Trie? Why do we need it?

  • Common Operations on Trie (Creation)

  • Insert a string in Trie

  • Search for a string in Trie

  • Delete a string from Trie

  • Practical use of Trie

Section 26 - Hashing

  • What is Hashing? Why do we need it?

  • Hashing Terminology

  • Hash Functions

  • Types of Collision Resolution Techniques

  • Hash Table is Full

  • Pros and Cons of Resolution Techniques

  • Practical Use of Hashing

  • Hashing vs Other Data structures

Section 27 - Sort Algorithms

  • What is Sorting?

  • Types of Sorting

  • Sorting Terminologies

  • Bubble Sort

  • Selection Sort

  • Insertion Sort

  • Bucket Sort

  • Merge Sort

  • Quick Sort

  • Heap Sort

  • Comparison of Sorting Algorithms

Section 28 - Searching Algorithms

  • Introduction to Searching Algorithms

  • Linear Search

  • Linear Search in Python

  • Binary Search

  • Binary Search in Python

  • Time Complexity of Binary Search

Section 29 - Graph Algorithms

  • What is a Graph? Why Graph?

  • Graph Terminology

  • Types of Graph

  • Graph Representation

  • Create a graph using Python

  • Graph traversal - BFS

  • BFS Traversal in Python

  • Graph Traversal - DFS

  • DFS Traversal in Python

  • BFS Traversal vs DFS Traversal

  • Topological Sort

  • Topological Sort Algorithm

  • Topological Sort in Python

  • Single Source Shortest Path Problem (SSSPP)

  • BFS for Single Source Shortest Path Problem (SSSPP)

  • BFS for Single Source Shortest Path Problem (SSSPP) in Python

  • Why does BFS not work with weighted Graphs?

  • Why does DFS not work for SSSP?

  • Dijkstra's Algorithm for SSSP

  • Dijkstra's Algorithm in Python

  • Dijkstra Algorithm with negative cycle

  • Bellman Ford Algorithm

  • Bellman Ford Algorithm with negative cycle

  • Why does Bellman Ford run V-1 times?

  • Bellman Ford in Python

  • BFS vs Dijkstra vs Bellman Ford

  • All pairs shortest path problem

  • Dry run for All pair shortest path

  • Floyd Warshall Algorithm

  • Why Floyd Warshall?

  • Floyd Warshall with negative cycle,

  • Floyd Warshall in Python,

  • BFS vs Dijkstra vs Bellman Ford vs Floyd Warshall,

  • Minimum Spanning Tree,

  • Disjoint Set,

  • Disjoint Set in Python,

  • Kruskal Algorithm,

  • Kruskal Algorithm in Python,

  • Prim's Algorithm,

  • Prim's Algorithm in Python,

  • Prim's vs Kruskal

Section 30 - Greedy Algorithms

  • What is Greedy Algorithm?

  • Well known Greedy Algorithms

  • Activity Selection Problem

  • Activity Selection Problem in Python

  • Coin Change Problem

  • Coin Change Problem in Python

  • Fractional Knapsack Problem

  • Fractional Knapsack Problem in Python

Section 31 - Divide and Conquer Algorithms

  • What is a Divide and Conquer Algorithm?

  • Common Divide and Conquer algorithms

  • How to solve Fibonacci series using Divide and Conquer approach?

  • Number Factor

  • Number Factor in Python

  • House Robber

  • House Robber Problem in Python

  • Convert one string to another

  • Convert One String to another in Python

  • Zero One Knapsack problem

  • Zero One Knapsack problem in Python

  • Longest Common Sequence Problem

  • Longest Common Subsequence in Python

  • Longest Palindromic Subsequence Problem

  • Longest Palindromic Subsequence in Python

  • Minimum cost to reach the Last cell problem

  • Minimum Cost to reach the Last Cell in 2D array using Python

  • Number of Ways to reach the Last Cell with given Cost

  • Number of Ways to reach the Last Cell with given Cost in Python

Section 32 - Dynamic Programming

  • What is Dynamic Programming? (Overlapping property)

  • Where does the name of DC come from?

  • Top Down with Memoization

  • Bottom Up with Tabulation

  • Top Down vs Bottom Up

  • Is Merge Sort Dynamic Programming?

  • Number Factor Problem using Dynamic Programming

  • Number Factor : Top Down and Bottom Up

  • House Robber Problem using Dynamic Programming

  • House Robber : Top Down and Bottom Up

  • Convert one string to another using Dynamic Programming

  • Convert String using Bottom Up

  • Zero One Knapsack using Dynamic Programming

  • Zero One Knapsack - Top Down

  • Zero One Knapsack - Bottom Up

Section 33 - CHALLENGING Dynamic Programming Problems

  • Longest repeated Subsequence Length problem

  • Longest Common Subsequence Length problem

  • Longest Common Subsequence  problem

  • Diff Utility

  • Shortest Common Subsequence  problem

  • Length of Longest Palindromic Subsequence

  • Subset Sum Problem

  • Egg Dropping Puzzle

  • Maximum Length Chain of Pairs

Section 34 - A Recipe for Problem Solving

  • Introduction

  • Step 1 - Understand the problem

  • Step 2 - Examples

  • Step 3 - Break it Down

  • Step 4 - Solve or Simplify

  • Step 5 - Look Back and Refactor

What you’ll learn

  • Learn, implement, and use different Data Structures

  • Learn, implement and use different Algorithms

  • Become a better developer by mastering computer science fundamentals

  • Learn everything you need to ace difficult coding interviews

  • Cracking the Coding Interview with 50+ questions with explanations

  • Time and Space Complexity of Data Structures and Algorithms

  • Recursion

  • Big O

🌐
Reddit
reddit.com › r/learnpython › best place to learn data structures and algorithms
r/learnpython on Reddit: Best place to learn Data Structures and Algorithms
January 7, 2020 -

Hi guys, I am learning python on my own from a month and facing lot of problem in solving the problem with in time. So I understood that I have to get a good at data structures and algorithms and watched bunch of videos and understood the concept of what are sorts but I am unable to write my own code for sorting using python. Are there any good resources for learning Data Structures and Algorithms ?It is becoming stupid that I could solve the problem linearly but couldn't do it in time for larger input cases and its frustrating.

🌐
Reddit
reddit.com › r/learnpython › learning dsa in python
r/learnpython on Reddit: Learning DSA in python
January 1, 2023 -

I have been trying to find some sources that can help me with learning DSA (Data structures and algorithms ) but almost all resources are in C++ or JavaScript. Can anyone please help me on how to learn DSA in python. I'm not from Computer science background. My proficiency in python language is near average (but I'm still working on improving it)

Find elsewhere
🌐
Reddit
reddit.com › r/learnprogramming › what’s the best way to learn data structures using python
r/learnprogramming on Reddit: What’s the best way to learn data structures using Python
May 15, 2023 -

Hello everyone, It’s been month since I’ve been trying to learn data structures and algorithms using python. I’ve been trying one google course but seems I’m not getting anything, so, I went to cs50, learn from week zero to week 5 and come back to the google course. It looks like I understood the concept but can’t apply it. I tried some examples as well. Any advice please?

🌐
Reddit
reddit.com › r/learnpython › free python online courses/resources for data structures and algorithms?
r/learnpython on Reddit: Free Python Online Courses/Resources for Data Structures and Algorithms?
September 7, 2022 -

I am learning Python and I want to take some introductory lessons on Data Structures and Algorithms. I would say that I am done with basics of programming. Are there Free Python Online Courses/Resources for Data Structures and Algorithms? I just finished CS50P and I am planning to delve deeper into leaning the language.

Thank you!

🌐
Reddit
reddit.com › r/learnpython › how best to learn data structures and algorithms?
r/learnpython on Reddit: How best to learn data structures and algorithms?
September 19, 2023 -

So, pretty much every career advice skills lists includes - or even leads with - DSA. Obviously, there are numerous books available on these topics, but what's the best way to actually practice these things?

I certainly know of linked lists, heaps, hash tables, etc, but reading the theory is at best half the battle.

Some info about my specific situation:

My interest is in the area of data analysis.

My resources are the books "A Common-Sense Guide to Data Structures and Algorithms", "Data Structures the Fun Way", "Dive into Algorithms".

I primarily practice on Stratascratch (which doesn't really cover this at all).

Thanks for any advice.

🌐
Reddit
reddit.com › r/learnpython › best python books for data structure and algorithms (dsa) ?
r/learnpython on Reddit: Best Python books for Data Structure and Algorithms (DSA) ?
August 1, 2024 -

So I wanna learn DSA then completely dive into Data Science and after that ML and DL, But first thing first I need to know which book would be good for me to learn DSA by using python ?

(I know that using book as primary source for studying would not be the best choice but the thing is I have much time so I wanna learn things deeply and clearly)

EDIT--Thanks for all your advice, Now I am going with "Data Structures and Algorithms in Python by  Michael H. Goldwasser, Michael T. Goodrich, and Roberto Tamassia".

Top answer
1 of 7
12
Maybe unpopular opinion, but python is bad for learning DSA, especiallythe DS part. I did a DSA course in C# and everything makes sense when you have declared types, build your classes and so on. However, if you are doing the same challenges in python, there are always the questions of - why not just use a list/dict/ordered dict. You have to counterintuitively write lower level things that python already handles.
2 of 7
8
Any good algorithm book will describe the algorithms in abstract terms, and not just in one particular language. Because after all, you can implement them in any language. I would recommend "Introduction to Algorithms" by CLRS (Cormen, Leierson, Rivest, Stein). The algorithms are described in pseudocode, not in any particular programming language. For example, their insertion sort is "implemented" as follows: for i = 2 to n key = A[i] // insert A[i] into the sorted subarry A[1:i - 1] j = i - 1 while j > 0 and A[j] > key A[j + 1] = A[j] j = j - 1 A[j + 1] = key You might notice that this already looks close to Python (and that their array indices are 1-based). IIRC Guido was inspired by how pseudocode looks (which is not standardized, just an ad hoc way to describe algorithms in a language neutral way); that's why there's the "Python is runnable pseudocode" memes, and stuff like this . Another popular book is "Algorithms" by Robert Sedgewick; I've never read it, but I assume the algorithms are also described in pseudocode. I've found a github repo where people implement the algorithms in Python. Of course there's also the holy bible TAOCP by Knuth, but that's more a reference for experienced people, as it is incredibly information dense and mathematical. Knuth himself said that "2 pages in my book is somebody's entire career work".
🌐
Reddit
reddit.com › r/learnpython › how to learn algorithms and data structures
r/learnpython on Reddit: How to learn Algorithms and Data Structures
January 2, 2021 -

Hello everyone,

i am an engineer and basically tought myself how to code, because i would like to go for machine learning. I am not an expert yet.

I often read or heard that algorithms and data structurs and all that are super important for coding and even if i think i make quite a good progress in learning, i often feel like i am missing the basics.

It's so much out there. Like tons of youtubers and online courses and some fancy bootcamp thing (Until recently i didn't even know something like that exists). Like Udemy, coursera, edx, youtube, tons of books, kaggle, leetcode, algoexpert, the list is endless. Everything is full of advertisement and i have no idea what i should go for...

What source can you recommend me to learn this stuff theoretically and practically preferable in python? I would prefer videos over a book and a big course that covers everything rather than a bit of this topic here and a bit of that topic there and stuff. I don't mind if it is some sort of academic and mathematically, but it should cover some practice aswell.

I was thinking about just going for this:

https://www.edx.org/xseries/mitx-computational-thinking-using-python

But not sure if it's deep enough. I don't even know how deep i have to understand all that. I am not planning to go for some PhD. I Just want to go for a Job at the interface of machine learning/coding and engineering, but i also realy want to understand this whole topic as deep as possible. So I don't want to spend hours and hours on following some course just to begin another course right after. If that's the only way, fine. But maybe someone has a good recommendation?

🌐
Reddit
reddit.com › r/learnpython › looking for a good source to learn about 'data structures and algorithms' using python.
r/learnpython on Reddit: Looking for a good source to learn about 'Data Structures and Algorithms' using Python.
October 18, 2023 -

Hello,
I know there are a dozen such questions already asked here, but some might be outdated etc.
I've recently finished the CS50P course and am working on my final project there, but I would like to know more about Data Structures and Algorithms because as of now it looks to me just like rocket science.

So my question:
Is there any good/solid course to take?

I would like them to include Python code snippets for each algorithm, and challenges/practices for each algorithm.

🌐
Reddit
reddit.com › r/learnprogramming › help me choose a data structures and algorithms course?
r/learnprogramming on Reddit: Help me choose a data structures and algorithms course?
August 29, 2022 -

Hi all!

I learned Python not too long ago, and I think I'm a pretty average (that might even be a generous descriptor) programmer.

I do use Python in my daily job, but just to get the results I need. Nobody reads or reviews my code. I feel like I'm learning a lot through trial-and-error, but I dream of being a really great programmer at another company someday, and I'm brainstorming how to take my programming to the next level.

I thought a great candidate for this would be a DSA course (which I know nothing about). However, the double-edged-sword of the internet has only about a million to offer, many of which seem great. So, I'm turning to you, awesome reddit community of people who know much more than I -- please help me choose! :)

(Many of these have been taken from previous posts asking for general recommendations. I have recommendations -- please help me either eliminate or choose!)

What I'm looking for:

  • Hands-on experience, preferably with some sort of problems I have to solve myself and solutions (not just a textbook or videos)

  • Rigorous (not just a quick overview or laundry list of many things, or how to talk about them in an interview; I want depth. I want to be able to apply things later and explain how they work. I am not looking for easy or shortcuts! So many courses water things down nowadays, but if I'm investing the time I want to do it rigorously!)

  • Appropriate breadth, i.e. no holes (despite high level of overlap among the courses, many seem to cover slightly different topics -- those of you who are in the know, it would be great if you can confirm a course covers at least everything "it should"!)

The contenders (in really no particular order):

  1. Master the Coding Interview: Data Structures + Algorithms (Udemy)

  2. Data Structures and Algorithms Specialization (Coursera - UCSD)

  3. Algorithms, Part 1 (Coursera - Princeton) (there is also a Part 2)

  4. Intro to Data Structures and Algorithms (Udacity)

  5. Analysis of Algorithms Lectures (Steven Skiena)

  6. MIT 6.006: Introduction to Algorithms (MIT)

  7. Problem Solving with Algorithms and Data Structures using Python (Pythonds / Runestone Academy)

  8. CS 61B (UC Berkely)

Of course, feel free to suggest something else if you feel strongly about it. If not, don't. There are a ton as it is!

Thanks really a ton for your time and attention to this!

🌐
Reddit
reddit.com › r/learnprogramming › a great course on dsa in python
r/learnprogramming on Reddit: A Great Course on DSA in Python
April 2, 2023 -

Introduction

Recently I completed the NPTEL course which is based on Data Structures and Algorithms in Python. This course is taught by Prof. Madhavan Mukund of Chennai Mathematical Institute. I like to thank the whole team of this course for making such a great course on such an unfamous topic and providing such great quality at free of cost.

Who should do this course and Why?

It's a great course for beginners in programming because it teaches Python from basic to intermediate level. If you don't have any prior knowledge of programming or Python you can take this course (no prerequisites). Also, this course teaches search and sorting algorithms at a very deep level. It also has many data structures like linked list, binary tree, heap, stack and queue. But I would say the Algorithms part was better. The Data Structure part was taught at a very basic level. I would recommend studying more about it from other resources.

Good luck if you are starting this course.

Why Python can be a great programming language for learning Data Structure and Algorithms

Python has a very beginner-friendly and easy-to-remember syntax. Python also has many inbuilt functions which can be very useful because you don't have to write the basic function in your code again and again (like you have to do in C) or import any library most of the time. But Python hides data types of variables because it's a dynamically typed language.

Python is a very popular language for Machine learning, Scientific calculations, and Data Science. Python is an interpreted language, no need to compile the code. Python is very easy to set up.

So, choose according to your aspirations and needs.

In the last lecture, Sir said a great line, **"**Learn Programming, NOT programming Language ". It's so true if you think deeply, the fundamentals of programming language are mostly the same and every language has pros and cons. Be a problem solver, not a syntax writer. Language doesn't matter, intent of learning and ability to solve problems matter. Programming language is just a medium. I understood this fact after some time.

Let's discuss each week one by one

Week 1 : Informal introduction to programming, algorithms and data structures Downloading and installing Python, gcd in Python: variables, operations, control flow - assignments, condition, loops, functions. It was very basic lectures, if you are a beginner you may find it very difficult but wait things will become easy after some weeks, be patient.

Week 2 : Python: types, expressions, strings, lists, tuples Python memory model: names, mutable and immutable values, List operations: slices etc, Binary searchInductive function definitions: numerical and structural induction, Elementary inductive sorting: selection and insertion sort, In-place sorting. This week real stuff comes and you will know many things you don't know in Python. Give time if you are a beginner try writing basic programs in Python. Move slowly, but learn properly.

Week 3 : Basic algorithmic analysis: input size, asymptotic complexity, O() notation, Arrays vs lists, Merge sort, Quicksort, Stable sorting. Here we study some common sorting algorithms. Here, the code is discussed, understand it properly by dry running it using pen and paper.

Week 4 : Dictionaries, More on Python functions: optional arguments, default values, Passing functions as arguments, Higher order functions on lists: map, filter, list comprehension. This week was more about Python language, Merge Sort and Quicksort, it gives you taste of hashmap using dictionary data type. Dry run sorting algorithms and write some basic programs in Python using what you have learned.

Week 5 : Exception handling, Basic input/output, Handling files, String processing. This week was focused on Python, but this week's lectures had many Python concepts are discussed that are not known by many people who know Python. So, don't skip even if you know Python.

Week 6 : Backtracking: N Queens, recording all solutions, Scope in Python: local, global, nonlocal names, Nested functions, Data structures: stack, queue andHeaps. This was focused on Data Structures and their implementation using list data type. This week also has a very important algorithm called Backtracking and it is explained, so view the lecture properly and at 1x speed.

Week 7 : Abstract datatypes Classes and objects in Python, Linked Lists : find, insert, delete, Binary search trees: find, insert, delete, Height-balanced binary search trees. This week's lectures were focused on OOP and Data Structure Implement. Data Structures were taught at a very introductory level so study from other resources also.

Week 8 : Efficient evaluation of recursive definitions: Memoization, Dynamic programming: examples, Other programming languages: C and manual memory management, Other programming paradigms: functional programming. This is the last week of this course. It was a fairly long week because it is on a very important topic of competitive programming called Dynamic Programming. Also, I found it was the assignment hardest of all. The last lecture was based on comparison of Python with other languages, some limitations of Python as a programming language and general advice for students.

Mistakes to avoid while taking this course

  • Don't view lectures at 2x speed. It's not a movie, it's a lecture. Pause when required, go back if you don't understand anything, search on the internet and go slow but learn properly.

  • Programming Assignments are relatively harder than Quizzes but teach you a lot and fill gaps in your learning. Please try to complete it on your own.

  • Check answers after completing the whole quiz. See your score and again study the weak topics.

  • Don't try to learn from multiple sources at once, first complete this course content then view other resources if needed.

  • Don't do multiple courses at once. If you try to learn from multiple resources, you will learn nothing. Move one-by-one.

Some Advices and Additional Things

It's not an 8-week course if you already know some Python.

Mostly, assignments are easy if you understood the lecture properly. My average score was 80%+. And please complete the assignment before going forward in the course, it's very beneficial for filling gaps in your understanding.

And don't leave this course incomplete. Take help and continue progressing.

In this course, Sir also runs the code on terminal/interpreter of Python to teach.

After completing this course you can make a project to showcase what you have learned in this course.

If you don't understand any topic properly in this course or some more stuff about Python not covered in this course, see this: https://www.cmi.ac.in/~madhavan/courses/python2022/

What after this course

This course makes a strong base for you in computer science and DSA. Now you can learn on your own.

Another course on Data Structures and Algorithms In Python by freeCodeCamp: https://www.freecodecamp.org/news/learn-algorithms-and-data-structures-in-python/

Also, Prof. Madhavan Mukund has an awesome course on the Design and Analysis of Algorithms: https://nptel.ac.in/courses/106106131

And many more, try searching on the internet.

Some Personal Talk

This was my first course of NPTEL and I would definitely recommend using NPTEL more because of its large library of free and quality courses. Also, I don't take certificate because it is a beginner-level course and the certificate was not free.

Also, I took this course after completing Harvard's CS50 and I thought this NPTEL course will not have that type of high-production quality. But this course is very well taught and it took time for me to adjust to this type of teaching process. Also, some people find NPTEL courses very boring but that's not true, you have to concentrate to understand the topic perfectly.

I have made handwritten notes of this course, which took some additional time. And due to my college academic pressure, this course took more time than in general.

I learned how to use Python Official Documentation.

Also, I found last week's assignment the hardest because it was on Dynamic Programming and it's a hard topic.

Lastly, Thanks for Reading this Blog Post 🙌, hope you have a good day :)

🌐
Reddit
reddit.com › r/learnprogramming › what is the best way to learn data structures and algorithms?
r/learnprogramming on Reddit: What is the best way to learn data structures and algorithms?
October 11, 2022 -

I am currently learning Python. I figured a good next step after learning syntax would be to go over ds+a. Should I use a python specific book? Should I use a general book that isn't specific to python? Should I use some video course? What do you recommend? Thank you!

Top answer
1 of 38
276
For algorithms to click, at least for me, a basic understanding of programming, math and general theory in the subject was required +++ a ton of practical practice. I am currently writing my CS Master's thesis and would personally recommend, based on my own studies and experience, a combination of: Book about algorithms (below, the basics have been, and will be, the same for ages) Hackerrank/Leetcode/w/e to actually apply what you have learned This is pretty much the algorithm bible, you can easily complete a CS degree up-to Master's in algo and will find everything you need here: Introduction to Algorithms (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein) This book includes all the theory, explanations and even exercises you could imagine. The book is as in-depth as you want it to be, you can just skip the theoretical proofs if you wish, but you still have all the knowledge available to you and will easily find the answers and information required to effectively argue about any algorithms and their time- and space requirements. EDIT: I noticed I unintentionally misled people with my statement about Master's. I edited it to include the word up-to, as we've used the book from the very first data-structures and algorithms course during the first fall of Bachelor's up to the Master's level.
2 of 38
96
I recommend purchasing an algorithms and data structure book. As you go through the work books, write the data structures on a piece of paper and run through them logically. You will have a solid base to move forward in any space once you get the skill of architecting/drawing solutions!
🌐
Reddit
reddit.com › r/leetcode › best course for data structures and algorithms?
r/leetcode on Reddit: Best course for data structures and algorithms?
March 17, 2024 -

Hi, I am looking for a comprehensive course on data structures and algorithms. I'm familiar with all of the basics (i.e., I know what DP is, I know what BFS/DFS and trees are, I use dictionaries/linked lists/arrays often as a data scientist) but am not great at implementing more complex algorithms and solving LeetCode-style questions.

I've seen LeetCode's DS&A paid course thrown around here, along with the Take U Forward course (https://takeuforward.org/strivers-a2z-dsa-course/strivers-a2z-dsa-course-sheet-2/) and the NeetCode course/NeetCode 150. I do not mind spending money on any of these resources -- I just want the resource to be comprehensive. LeetCode's course seems solid (again, ignore the price); the Take U Forward course seems OK but there is no obvious way to see Python solutions for any of the problems, which makes my life unnecessarily hard. NeetCode's DS&A course seems more superficial than LeetCode's. Anything I'm missing? Thank you!

Top answer
1 of 11
20
During my preparation for data structures and algorithms, I learned that one part of preparation is basic 
data structures and algorithms and the other part of the preparation is Leetcode Medium/hard Problem level preparation for DSA. Logically, we are all preparing DSA according to Leetcode Medium/hard problem level because companies ask DSA questions in interviews. For a basic level of preparation, you can do geeksforGeeks and leetcode practice by yourself. Once you face the difficulty, then join courses that prepare you for LeetCode’s hard problems. This way, when you take those courses, you’ll learn more. When it comes to courses, you already mentioned many of them. Neetcode is for self preration content. Before going to Striver’s sheet, I want to understand the techniques and patterns of solving various types of DSA questions. I have joined Logicmojo Course for DSA . Focus is on interview preparation. It's good, concise, and structured way. But dont expect everything from courses, you need to practise at least 2 questions every day. My suggestion is to go to Leetcode, filter based on company and start solving easy to hard problems. This exercise helps me in my preparation. I uploaded all important questions to GitHub, also. DM me if you need it.
2 of 11
18
For any companies interview ,coding rounds are there and you should know Data structures and Algorithms. You know programming, so start practicing with basic problems, focusing on Arrays, linked lists, stacks, searching, and sorting. HackerRank is good for beginners, solving simple problem(mostly Easy) sets and understanding complexity analysis. Look for structured courses. The Zero to Mastery course is a good option for interview preparation, but it mostly focuses on tough questions. Go with the course that provides good theoretical knowledge and covers problem-solving exercises. You cant solve millions of questions in Leetcode but if you focus on learning different techniques of Data Structures and Algorithms and only focus problems based on it. Then you will solve even new problems in interviews which you never say before. The CS50 on edX introduces you to computer science fundamentals, basics data structures, algorithms like searching and sorting, and Big-O Notation. The course provides updated content and supports multiple languages MIT OpenCourseWare is another great course focusing on interview-level data structures and algorithms. You will learn divide-and-conquer, merge sort, quick sort, heaps, and graphs. Logicmojo DSA course is great for a deep understanding of algorithm design. Live classes are easier to digest, explaining how to implement DSA and covering topics like recursion, backtracking, DP(Mostly I was confused about this) and Trie. YouTube Playlists: video based preparation content , Before jumping into courses i followed below youtubers , Bhaiya and Didi :) , its good for kickstart CodeWithHarry – Beginner-friendly Java DSA course. William Fiset’s DSA Playlist" – One of the best for Java, explains every concept in depth. Take U Forward – Excellent DSA roadmap, best for interviews. Apna College - Java DSA – Best for structured learning. Practice Platforms: Leetcode – Best for FAANG-style interview prep. (Need no introduction, Bible of DSA Questions) Codeforces / AtCoder – For improving competitive coding skills. GeeksforGeeks – Great for topic-wise practice. check companies wise practise session Just be consistent, at the start, you feel it's taking more than 1 hour to solve even single problems but as you solve similar kinds of questions (especially questions asked in interviews). You will see your timing is improving day by day with code quality.