Dynamic Programming: Memoisation and the Fibonacci Problem
Develop a thorough understanding of dynamic programming starting from the classic Fibonacci problem. We build intuition for identifying optimal substructure and overlapping subproblems.
Video Lectures
In-depth video lectures across all subjects, taught with clarity and precision.
8 lectures
Develop a thorough understanding of dynamic programming starting from the classic Fibonacci problem. We build intuition for identifying optimal substructure and overlapping subproblems.
A rigorous introduction to one-dimensional kinematics using calculus. We derive the equations of motion from first principles and apply them to a variety of problems.
We introduce vectors in n-dimensional space, covering addition, scalar multiplication, dot product, and their geometric meanings including angles and projections.
A complete treatment of linked list data structures — implementation, traversal, reversal, and detecting cycles. Includes Floyd's cycle detection algorithm.
Master array fundamentals — memory layout, time complexity of common operations, and the elegant two-pointer technique for solving array problems efficiently.
We define the derivative as a limit of difference quotients and explore its geometric interpretation as the slope of the tangent line.
A thorough exploration of continuous functions, types of discontinuities, and the powerful Intermediate Value Theorem with applications.
We begin by developing an intuitive understanding of limits before rigorously defining them using the epsilon-delta formalism. This lecture sets the conceptual foundation for the entire course.