Learning paths
These notes cover computer science, mathematics, and the foundations of machine learning. Start with the question closest to your problem. Each short path introduces an idea, then shows where it matters; the paths can be read independently.
Why does a program slow down as its input grows?
Time complexity explains what operation counts and asymptotic bounds tell you—and what they do not say about measured speed. Then follow binary search to see how halving a search interval gives logarithmic cost, provided the data and access pattern meet its assumptions.
How should a program store a sequence?
Compare arrays and dynamic arrays with linked lists. The choice depends on indexed access, resizing, traversal, and insertion—not just the cost of one isolated operation. The notes also explain why a Python list is a dynamic array rather than a linked list.
What does a derivative tell you about a function?
Begin with the derivative definition: a limit that describes tangent slope and instantaneous change. Continue to critical-point analysis to use derivatives for increasing intervals, extrema, and concavity, including cases where a test is inconclusive.
Does a good test score mean a model will work elsewhere?
Data splits and leakage shows how a test can accidentally reveal information unavailable at prediction time. Then read evaluation under distribution shift to connect scores to the population, period, threshold, and error costs that matter in use.
For a formula or command without a reading path, use the Reference Shelf.