# Algorithms and Data Structures Tutorial – Full Course for Beginners

July 16, 2024 2024-07-16 21:14## Algorithms and Data Structures Tutorial – Full Course for Beginners

In this course you will learn about algorithms and data structures, two of the fundamental topics in computer science. There are three main parts to this course: algorithms, data structures, and a deep dive into sorting and searching algorithms.

By the end, you will understand what algorithms and data structures are, how they are measured and evaluated, and how they are used to solve problems.

This course was developed by Pasan Premaratne and Jay McGavren. It was made possible by a grant from teamtreehouse.com

⭐️ Course Contents ⭐️

⌨️ (0:00:00) Introduction to Algorithms

⌨️ (1:57:44) Introduction to Data Structures

⌨️ (4:11:02) Algorithms: Sorting and Searching

⭐️ Code Snippets for Course ⭐️

💻 Introduction to Algorithms:

⌨️ Algorithms in Code:

🔗 Linear Search Implementations: https://teamtreehouse.com/library/introduction-to-algorithms/algorithms-in-code/linear-search-implementations

🔗 Binary Search Implementations: https://teamtreehouse.com/library/introduction-to-algorithms/algorithms-in-code/binary-search-implementations

💻 Introduction to Data Structures

⌨️ Exploring Arrays:

🔗 Array Characteristics and Storage: https://teamtreehouse.com/library/introduction-to-data-structures/exploring-arrays/array-characteristics-and-storage

🔗 Operations on Arrays: https://teamtreehouse.com/library/introduction-to-data-structures/exploring-arrays/operations-on-arrays

⌨️ Building a Linked List:

🔗 Singly and Doubly Linked Lists: https://teamtreehouse.com/library/introduction-to-data-structures/building-a-linked-list/singly-and-doubly-linked-lists-2

🔗 Linked List Operations: https://teamtreehouse.com/library/introduction-to-data-structures/building-a-linked-list/linked-lists-operations

⌨️ The Merge Sort Algorithm:

🔗 Merge Sort Implementations: https://teamtreehouse.com/library/introduction-to-data-structures/the-merge-sort-algorithm/merge-sort-implementations

🔗 Alternate Versions of Merge Sort: https://teamtreehouse.com/library/introduction-to-data-structures/the-merge-sort-algorithm/alternate-versions-of-merge-sort

⌨️ Merge Sort and Linked Lists:

🔗 Implementing Merge Sort on Linked Lists: https://teamtreehouse.com/library/introduction-to-data-structures/merge-sort-and-linked-lists/implementing-merge-sort-on-linked-lists

💻 Algorithms: Sorting and Searching

⌨️ Sorting Algorithms:

🔗 Code for Bogosort: https://teamtreehouse.com/library/algorithms-sorting-and-searching/sorting-algorithms/code-for-bogosort

🔗 Code for Selection Sort: https://teamtreehouse.com/library/algorithms-sorting-and-searching/sorting-algorithms/code-for-selection-sort

🔗 Code for Quicksort: https://teamtreehouse.com/library/algorithms-sorting-and-searching/sorting-algorithms/code-for-quicksort

🔗 Code for Merge Sort: https://teamtreehouse.com/library/algorithms-sorting-and-searching/sorting-algorithms/code-for-merge-sort

⌨️ Searching Names:

🔗 Code for Linear Search: https://teamtreehouse.com/library/algorithms-sorting-and-searching/searching-names/code-for-linear-search

🔗 Code for Binary Search: https://teamtreehouse.com/library/algorithms-sorting-and-searching/searching-names/code-for-binary-search

—

Learn to code for free and get a developer job: https://www.freecodecamp.org

Read hundreds of articles on programming: https://freecodecamp.org/news

source

## Comments (36)

## @sessdu

great work

## @ghanshyamnokhwal968

very nicely explained,from scratch by Pasan Premaratne sir…is there any more other lecture byPasan Premaratne sir

## @mahrigoshayeva3582

Sorry to ask if 5 is the number you pick and 3 is too low or low ?

## @AmanKumar-wq6yq

best video for beginners in DSA

## @d.youtubr

How the heck is this available for free!? 😅

## @neil5268

Soon to be a web developer,its not easy but i will sacrifice all my energy to achive whay i really want to be.

## @MarcoAurelio-sv2tk

I have just compared the runtime of the same algorithm in C and Python… The difference is quite abismal. C wins by far!

## @Momo2k360

Thank you very much

## @Augustwiisk

personal time:

day 1) 00:00 – 36:33

day 2) 36:33 – 1:04:22

day 3) 1:04:22 – 1:57:50

day 4) 1:57:50 – 3:03:07

day 5) 3:03:07 – 3:28:19

day 6) 3:28:19 – 4:11:11

day 7) 4:11:11 – 5:22:07

i finish!!!! yey

## @teddymacdesley

Thanks alot this will surely help me for my Tomorrow HND exams in Cameroon.❤

## @user-gu6kh5ws8j

1:04:36

## @patelkaran134

20:00

## @cruyffsworld9731

best algorithms course i have ever seen , understood big O instantly .

## @vrakitine

Thank you for the excellent video. As a programmer with 50 years of experience, I must say that we have lost touch with algorithms in the sense I discuss in my articles on Medium: "Bagels and Muffins of Programming or How Easy It Is to Convert a Bagel into a Black Hole"

Thinking algorithmically and living in an algorithm-centric world of software engineering, creating muffin-like programs, is now the domain of a few solitary individuals. Today's programming world increasingly focuses on a code-centric approach, where algorithms are not seen as separate entities. This shift has led to significant changes in how we develop and maintain software.

There was a time when algorithms were at the heart of any program, providing a clear and understandable structure for development. They helped us build logical and efficient solutions. However, with the rise of high-level programming languages and frameworks, the emphasis shifted to quickly writing code and implementing new features, often at the expense of structured algorithmic thinking.

Nowadays, we often encounter bagel-like programs where the code exists separately from the algorithm, creating internal inconsistencies and maintenance difficulties. In such conditions, achieving stability and reliability in software becomes challenging.

Returning to an algorithm-centric approach and creating muffin-like programs, where the algorithm and code are integrated, can significantly improve the quality of software. This will not only simplify testing and maintenance but also allow for more flexible and resilient systems.

I hope more developers will begin to recognize the importance of algorithms and move towards a more structured and meaningful approach to programming. Only in this way can we create software that is reliable, understandable, and easy to maintain.

## @GourabHore-mt1nd

Is the binary search algorithmic code which had been taught here useful when the list or array is not sorted?

## @afshinnikkhoo2013

Could a tutorial be any better!

I loved the visulisation part. savedme alot of time and nerves to understand the consepts and codes 🙂

2:52:52 if you have problem. change the node.next_node to current.next_node

## @JohnSmith-op7ls

Any company that makes you answer algo and data structure questions in the interview, run.

It’s just a super lazy way to thin out the herd to see who is willing to memorize lots of junk they’ll never actually use on the job. Seriously, like 99.999% of devs don’t need to know almost any of this or at most, know the name and general use case for a few of these and they can later look up implementation if they actually need to.

Any company that demands you waste your time before even hiring you, doesn’t respect you and won’t if you’re hired.

## @LightlyLilyAsmr

This is one of my favorite videos from you guys, and you're a one of a kind teacher!

## @jesusj.juarez

Gracias

## @jamesaddy7233

I really enjoyed the lesson continue to help us with this tutorial. Thank you.❤

## @armandopenaleonett1258

Thank you very much thank you so much

## @JamesDaniel-gf6qq

I think I can just un-enroll in a MS in CS since I watched this video.

## @sona4560

Thanks for making it super easy! loved it

## @veritasman

This is what internet was made for… Sharing knowledge

## @miguelbautista3628

50:55 Quadratic time

## @forget-me-not8522

14:30

## @perlecatt9123

i cant believe this is free

## @madhanravi4365

Which language is this course thought

## @somayataher7882

رائع❤

## @hungngo8078

while i < len(left):

l.append(left[i])

i+=1

while j < len(right):

l.append(right[j])

j+=1 can anyone explain this part for me in merge_sort i try my code without this code the output only shows the first element and stop the whole process

## @NugrohoBudianggoro

I haven't watch this but I want to appreciate the English with minimum accent here. No disrespect for tutors with thick accents, but with 1.5x – 2x speed it is much easier to hear clearer English.

## @annasmith5216

2 hours in. THANK YOU!! I was trying to do leet code problems without this fundamental knowledge and it was a nightmare and everything already makes so much more sense

## @johanesas9596

Thank youu

## @themks8452

watch it in 2x speed to learn it in 2 hours 30 minutes

## @beastvarder1832

can you tell me which number is missing

## @widurangadilruksha

Thanks