Learning path

Data structures and algorithms (DSA)

Start with Python's full core sequence, or study the same structures and algorithms in C, C++, Java, C#, Kotlin, JavaScript, TypeScript, and other languages. Compare operations, trace state, and reason about complexity.

  1. 1

    Python

    Readable code for automation, data, and first programs.

    Python algorithm complexity

    Compare linear work with quadratic work by counting operations.

    Python sets and tuples

    Choose uniqueness or immutable grouping to fit the problem.

    Python linear search

    Find the first matching element without assuming sorted input.

    Python binary search

    Halve a sorted search interval after each comparison.

    Python bubble sort

    Move the largest remaining item to the end with adjacent swaps.

    Python selection sort

    Select the smallest remaining value for each position.

    Python insertion sort

    Grow a sorted prefix by shifting larger elements.

    Python merge sort

    Sort halves recursively and merge them in order.

    Python quicksort and partitioning

    Partition around a pivot, then sort smaller subproblems.

    Python stacks and balanced parentheses

    Use last-in, first-out storage to match nested parentheses.

    Python queues with deque

    Process work in first-in, first-out order.

    Python dictionaries and frequency counting

    Count repeated values using key-value lookup.

    Python singly linked lists

    Follow node references and insert at the head.

    Python binary search trees

    Insert ordered keys and traverse them in sorted order.

    Python heaps and priority queues

    Remove the smallest priority efficiently.

    Python graphs and breadth-first search

    Visit reachable vertices level by level without revisiting cycles.

    Python depth-first search

    Explore one branch fully before returning to alternatives.

    Python Dijkstra shortest paths

    Relax nonnegative weighted edges using a priority queue.

    Python dynamic programming

    Reuse earlier results instead of recomputing overlapping subproblems.

    Python backtracking and subsets

    Choose, recurse, and undo to explore a decision tree.

  2. 2

    C

    Learn memory, pointers, and efficient systems programming.

  3. 3

    C++

    Build fast applications with modern types and classes.

  4. 4

    Java

    Understand object oriented programs and the JVM.

  5. 5

    C#

    Build typed applications on .NET.

  6. 6
  7. 7

    JavaScript

    Add behavior to the web and build applications.

  8. 8
  9. 9
  10. 10
  11. 11

    Go

    Learn simple, fast programs and explicit control flow.

  12. 12
  13. 13

    Ruby

    Express clear programs with readable syntax.

  14. 14

    Swift

    Learn expressive, typed programming for Apple platforms.

  15. 15
  16. 16

    Lua

    Learn a compact language often used for scripting.