I am looking for some online courses for DSA with Python (as many courses on Coursera are using Java).
Some requirements:
-
Basic, introductory about DSA only
-
Well structured
-
Using Python for practice
So far, I only found 2 courses: Jovian and MIT 6006. Are there any other courses you would recommend?
Thank you
Can someone please tell me where I can find the best resources to study and master data structures and algorithms in Python.
Videos
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!
I've learned the basics of Python and now want to dive into data structures and algorithms using Python. Can anyone recommend good YouTube playlists or websites for learning DSA in Python?
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
I am having a hard time understanding it with Python. Any youtube tutorials or coursera or udemy classes you guys suggest is so much appreciated. Thank you
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.
MIT's "Introduction to Computer Science and Programming Using Python" on edX is one good starting point.
i totally agree on this. That book is great if you seriously want to learn Data Structures and Algorithms. It helped me a lot back when i started my CS journey and it still helps me now and then.
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)
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?
I am looking for a good course to learn more about Data Structure and Algorithms, I have a basic understanding of programming but am lacking in that aspect of it.
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!
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.
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".
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?
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.
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):
-
Master the Coding Interview: Data Structures + Algorithms (Udemy)
-
Data Structures and Algorithms Specialization (Coursera - UCSD)
-
Algorithms, Part 1 (Coursera - Princeton) (there is also a Part 2)
-
Intro to Data Structures and Algorithms (Udacity)
-
Analysis of Algorithms Lectures (Steven Skiena)
-
MIT 6.006: Introduction to Algorithms (MIT)
-
Problem Solving with Algorithms and Data Structures using Python (Pythonds / Runestone Academy)
-
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!
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 :)
Can anybody suggest free and good resource for learning data structures and algo in Python from scratch
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!
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!