Practical Data Structures & Algorithms in Java

Udemy Online Class

Motivation

Over the years, I've dabbled with DS & Algorithms but I felt it was time to gain a firm working knowledge of it. There is no better investment than improving yourself. I also want to be able to give better advice to the students I mentor.

Simple tasks such as merging two arrays of objects can be easily solved in code but can be fundamentally flawed without a working knowledge of data structures and algorithms. For example, it's intuitive to solve this problem with a O(n^2) growth rate solution. There are more performant algorithms to use. I find that these algorithms are non-intuitive solutions at first but become intuitive once you have the right mental model.

I'm excited to see what new solutions I come up with by having a fundamental working knowledge of DS & Algorithms.

Benefits of having a practical knowledge of DS & Algorithms:

  • Excel at code challenges in customer/job interviews
  • TopTal qualification (this is the one missing piece)
  • Improve the advice I give to my students (at Thinkful and on the job)
  • Most importantly, improving skills as software developer

Course Details

This course takes a practical approach to learning data structures and algorithms. This means that you spend the majority of the course implementing data structures and algorithms. This allows you to learn theory through practical application.

The course covers:

  • Introduction to Object Oriented Programming
    • Introduction to OOP Class & Object, Program Flow, App Runtime, etc.
    • Java behind the scenes: Stack (frames) & Heap (references and storage)
  • Data Structures
    • Abstract Data Types
    • Big O Notation
    • Stack
    • Queue
    • Linked Lists: Singly, Circular, and Doubly
  • Popular Searching and Sorting Algorithms
    • Linear Search, Binary Search
    • Recursion: Introduction, Recursive Linear & Binary Search
    • Big O Notation, part 2
    • Selection Sort
    • Insertion Sort
    • Merge Sort
    • Quick Sort
  • Advanced Data Structures
    • Binary Search Tree
    • Heaps
    • Graphs