
Master calculus 1 using Python emphasizes active learning through traditional lectures, hands-on exercises, code challenges, handwritten notes, and a Q&A, with prerequisites of basic math, some Python, and clear intention.
Explore gradient fields in a hands-on Python demo that builds a two-variable multivariable function, computes its partial derivatives, and visualizes gradients with contour and quiver plots using numpy and matplotlib.
Learn to navigate the Udemy platform, adjust playback speed, use notes and captions, and post and engage with the Q&A and reviews to maximize learning.
Download all course code and solutions from GitHub, unzip the zip file, and run the exercises in Google Colab to explore calculus with Python.
Go for it; share code with attribution, note modifications as modified from the original, include my name on file, and contact me for commercial use; education or research requires citing.
Decide whether to watch the end-of-course Python tutorial appendix, about 8 hours of beginner videos plus 12–15 hours with exercises, focusing on NumPy, SciPy, and Matplotlib.
Learn to read a function’s characteristics from its equation, including behavior near zero and infinity, and domain and range. Build calculus skills by studying arbitrary functions to prepare for applications.
Navigate math and coding terminology and notation with clarity. See how pi differs between math and Python, and why math functions differ from Python functions, requiring flexible interpretation.
Define mathematical functions and distinguish them from Python functions, mapping inputs to outputs with f(x). Visualize via graphs, use the vertical line test, and note independent and dependent variables.
Explore domain (input) and range (output) of functions, and master notation using inequalities, intervals, and sets with inclusive and exclusive bounds.
Differentiate linear and nonlinear functions via geometric and algebraic definitions. Linear functions have a constant delta y over delta x and are written as y = m x + b.
Join a Python code challenge to plot the function y = x^2 + 3x^3 - x^4 with NumPy and Matplotlib, exploring domain -2 to 2 and a code-along workflow.
continue the code challenge by implementing the function in sim pi with a symbolic beta, then plot it over a defined domain and convert the expression to a numpy function.
Explore polynomial functions defined by sums of x to higher powers with coefficients, including order and intercept, and learn polynomial arithmetic, even/odd symmetry, and rational functions in calculus and Python.
Generate and plot random third-order polynomials with numpy on a -5 to 5 domain, then construct and plot a rational polynomial with sympy and matplotlib.
Learn to approximate a sine wave with a 10-term McLaurin series in Python, using polynomial terms, NumPy plotting, and careful handling of factorials and indexing.
Explore transcendental functions, which cannot be expressed by finite algebraic operations, and learn the key examples—cosine, sine, the natural logarithm, and the natural exponential—along with their calculus applications.
Explore the natural exponential e^x and the natural logarithm ln, their domains and ranges, inverse relationship, and key properties, with Python exploration.
Explore the natural exponential and logarithm with numpy and sympy, implement exp and log, verify their inverse relationship, and tackle five exercises including estimating e and visualizing convergence through parentheses.
Explore the natural exponential and logarithm using python, comparing sympy and numpy, and empirically verify that log and exp are inverse functions through plotting.
Explore exponents and natural log properties through code challenges, apply sympy to prove product and quotient rules, and discuss zero exponents and derivative intuition for calculus.
Using numpy, this lecture demonstrates three natural log rules: ln(a b)=ln a+ln b, ln(a^b)=b ln a, and ln(a/b)=ln a - ln b, for positive A and B.
Learn the core trig concepts: sine and cosine as right-triangle ratios, their unit-circle interpretation, tangent relationships, and the sine-squared plus cosine-squared equals one identity.
Develop intuition for trig functions in Python by plotting sine variants, exploring grid spacing and resolution, and building composite functions through nested sine and cosine operations.
Explore piecewise functions, their case notation, and how each piece defines a subdomain. See examples like absolute value and ReLU, and how linear pieces form a nonlinear overall function.
Explore implementing piecewise functions in numpy and plotting with matplotlib, including evaluating near a point and handling subdomains, then compare with a symbolic piecewise approach.
Evaluate a piecewise function at x = 0.5 with numpy and sympy, comparing numeric and symbolic results, and learn to locate the closest vector value with argmin.
Explore continuity and discontinuities in functions, learn the three main types—jump, infinite, removable—and understand how limits underpin continuity and differentiation.
Explore discontinuities in functions with NumPy plotting, learn to identify continuous domains and singularities using SymPy, and examine jump, removable, and oscillating discontinuities.
Investigate infinite and oscillating discontinuities by translating math into Python, plotting with NumPy and Matplotlib, and using SymPy to identify three regions of continuity and two discontinuities.
Explore the intermediate value theorem, its continuity requirement on an interval, and how it guarantees a root between F(A) and F(B), with applications to polynomial equations and derivatives.
Explore composite functions that combine two functions by feeding the output of one function into the other, noting order, notation, and domain, and connect to the chain rule.
Explore inverse functions that undo a transformation, with F^-1 notation. Learn when inverses exist and how to compute them by hand, including the domain-range relation.
Translate math into Python by implementing composite and inverse functions in NumPy and Senpai, then plot F, G, H and their composites to solidify understanding of function composition and inversion.
Explore composite and inverse functions, including the triple composite F(G(H(x))), in python using simply, with substitution and plotting, and test invertibility.
Explore function symmetry by testing F(−x) against F(x) and −F(x) to classify functions as even, odd, or neither. See how cosine and sine illustrate ideas and how symmetry aids calculus.
Learn a five-step plan to sketch functions by hand and grasp the general shape from the equation. Identify the domain, easy points, limits, and discontinuities to build intuition.
Create infinite numpy-driven functions for practice, starting with second-order polynomials with random coefficients, then explore exponential-cosine sketches via sympy and matplotlib.
Learn to generate a random piecewise function by selecting from predefined negative and positive x functions, using eval for dynamic code, and plotting the left and right branches.
Explore how math understanding ranges from intuition to proofs and choose the level that fits your goals and time, using code, language, and equations as representations.
Contrast the discovery timeline of calculus with how quickly learners can master established techniques, and focus on learning what others have already figured out rather than re-deriving from scratch.
Explore limits as the foundation of calculus, linking derivatives and integrals, and use Zeno's paradox to illustrate approaching a point; implement limits in numpy for intuition.
Define and visualize limits, introduce their notation, and explore left-right and infinity limits, showing how limits underpin calculus and relate to continuity; illustrate algebraic computation.
Use python to explore limits by implementing a zeno's paradox–inspired algorithm for f(x)=cos^2(x^2+pi) and plotting left and right approaches toward a equals one, illustrating limit convergence.
Learn to compute limits by plugging in values or factoring, cancel factors to resolve removable discontinuities, and understand polynomial behavior as x approaches a point.
Explore one-sided and two-sided limits, show how left and right limits can differ, and examine limits at infinity, discontinuity, and the heaviside function.
Learn to compute limits with NumPy and SymPy, implement f(x), estimate left and right limits as x approaches three, and plot to compare numerical and analytic results.
Explore infinite limits by implementing a symbolic function in SymPy, plotting with Matplotlib, and computing left, right, and two-sided limits in NumPy and SymPy.
Explore the four key properties of limits, factoring constants, additivity, multiplicativity, and the divisive property of limits, and demonstrate them empirically in Python with a sample function.
Explore multiplicative property of limits and its use with powers in Python, and learn division caveat: limits must exist, shown with F, G, and H and a zero denominator.
Revisit the formal definition of continuity via limits and its conditions. Classify discontinuities, jump, infinite, removable, using one-sided limits and the relation to function value.
Explore limits at discontinuities by implementing a piecewise function in Python with a tolerance for zero, estimate left and right limits using NumPy, and visualize the behavior with plots.
Compute and analyze limits at discontinuities in Python, using SymPy and NumPy, implementing a piecewise function, evaluating left, right, and two-sided limits, and exploring infinite and oscillating cases.
Explore two essential trig limits of trig functions: sin(h)/h → 1 and (cos h - 1)/h → 0, using geometric intuition, graphs, and multiple proofs, including the squeeze theorem.
Implement sin(phi)/phi and (cos(phi)-1)/phi in Python using SymPy, then compute their limits as phi approaches zero to verify the results 1 and 0, illustrating role in differentiating sine and cosine.
Learn the squeeze theorem, also called the sandwich or pinch theorem, which bounds f(x) between g(x) and h(x) as x approaches a, yielding lim f(x)=L when lim g(x)=lim h(x)=L.
Explore tricky trig limits using the squeeze theorem, visual intuition, and algebraic tricks, solving three limits involving sine, cosine, and tangent, with a glimpse of Python verification.
Explore trig limits in python by implementing f(theta)=sin theta over theta, g(theta)=-1/theta, and h(theta)=1/theta, plotting them, and proving the limit is zero as theta approaches infinity via the squeeze theorem.
Explore trig limits in sympy by decomposing tan(theta)/theta into sin(theta)/theta and 1/cos(theta), plotting with matplotlib, and examining component limits to illustrate the product rule caveat.
Explore the main limit categories, from easy plug-in cases to nonzero over zero and indeterminate forms, and see when algebraic manipulation or l'Hôpital's rule resolves them.
Explore infinitesimals, their historical controversy, and how limits underpin modern calculus, then connect derivatives and practical intuition with machine epsilon concepts in Python.
Apply a five-step framework to analyze and sketch functions by decomposing them, studying limit behavior near discontinuities and infinity, with trig, absolute value, Gaussian, and tangent examples.
Use Python to generate infinite limit problems through factoring, expanding, and canceling terms; compute left, right, and two-sided limits and visualize results.
Generate random problems endlessly, apply conjugate techniques to limits, and visualize one-sided and two-sided limits for functions with square roots and absolute values using Python.
Explore the benefits and challenges of self-directed learning, including motivation, accountability, and the shift from traditional classrooms to autodidactic study in calculus with python.
Break big learning goals into smaller sub goals, set realistic deadlines with real consequences, and use an accountability buddy to sustain self-directed calculus study.
Explore how limits underpin calculus and differential calculus, and learn differentiation as the process of obtaining derivatives, the slopes of functions as change approaches zero, with Python tools.
See how the derivative arises as the slope of tiny line segments, using delta and limits. Build intuition from a single slope to piecewise slopes.
Explore global and local slopes in Python by computing slopes, building a slope series from line segments, and comparing global slope to the average of local slopes toward the derivative.
Learn the formal definition of the derivative as the limit of the slope of f(x) as delta x (or h) tends to zero, with linear and quadratic examples.
Prove that the derivative of a constant is zero using the limit definition. Demonstrate a simple method to establish derivative properties and differentiate functions.
Explore the four notations for differentiation: Leibniz, Lagrange, Newton, Euler, and their uses, plus a geometric view of tangent and secant lines, with infinitesimal slopes and partial derivatives.
Explore differentiating functions with sympy, compute derivatives using diff, and visualize how derivatives relate to plots—covering a linear function and x squared, plus evaluating derivative values at selected points.
Interpret derivative plots by reading the slopes of tangent lines, not the function values, and identify sign changes and zero crossings to detect critical points.
Demonstrate the linearity of differentiation by using Python to separate addition and scalar multiplication, showing that the derivative of a sum equals the sum of derivatives.
Master the polynomial power rule: differentiate any polynomial by bringing down the exponent as a multiplier, subtracting one from the exponent, and noting the derivative of constants is zero.
Uncover cyclic derivatives of cosine and sine with geometry-based intuition. Derive d/dx cos x = -sin x and d/dx sin x = cos x using angle addition identities and limits.
Explore code challenges on trig derivatives using numpy and sympy, comparing empirical derivatives with analytic results, scaling with dx, and illustrating cosine and sine cycles.
examine derivatives of the absolute value and square root, their signum relation, with -1 for x<0, 1 for x>0, undefined at zero, and 1/(2 sqrt x) for the square root.
Explore how the natural log differentiates to 1/x and how e^x differentiates to itself, with the derivative of log base B scaled by ln B. Visualize the graphs and domains.
Identify critical points as x-values where the derivative is zero or undefined, with the function defined; use algebra and graphs to locate them, revealing maxima, minima, inflection points for optimization.
Master calculus 1 concepts by learning to find critical points: compute derivatives, solve when they equal zero, and check for discontinuities, with multiple examples including cosine, e^x, and piecewise functions.
Explore critical points in Python using NumPy, compute empirical derivatives, and approximate zeros by minimizing the derivative’s absolute value with the PSI Pi find peaks function, with plots.
Explore critical points in python by deriving analytic derivatives with sympy, solving derivative equals zero, and reporting the critical points and their critical values.
Create unlimited calculus practice with three exercises that generate random polynomial and transcendental functions, differentiate in Python, plot results, and verify via empirical derivatives.
Explore the four positions on math: invented, discovered, a mix of both, and the application-focused view, and how math's usefulness shapes its role in science and life.
Explore how the limits definition of derivatives leads to rules like the product, quotient, and chain rules, with implicit differentiation, visualizations, and coding challenges to build intuition.
Prove the linearity of differentiation by showing that the derivative of K = a F(x) + b G(x) equals a F'(x) + b G'(x) using the limit definition.
Demonstrate that differentiability at a point implies continuity there, using the derivative definition and limit properties, and note that continuity does not imply differentiability, as shown by absolute value function.
Master the product rule for differentiating the product of two functions, f(x) and g(x), with its formula f'(x) g(x) + f(x) g'(x). Explore examples, domain notes, and a short proof.
Learn to differentiate composite functions with the chain rule by taking the derivative of the outer function and multiplying by the inner function's derivative, with many worked examples.
Explore the quotient rule for differentiating ratios of functions, derive it from the chain and product rules, examine examples and a proof, and clarify it's not the ratio of derivatives.
Apply the product and quotient rules in a hands-on python challenge to differentiate x squared and cosine of x, verify derivatives, and glimpse introduction to integration and differential equations.
Explore the chain rule with two- and three-function compositions, differentiate by hand and with Python, verify results, and plot f(g(h(x))) and its derivative while examining domain.
Master implicit differentiation to compute y' and solve for derivatives using product and chain rules. Compare explicit and implicit functions and see how differential equations benefit from this approach.
Explore implicit differentiation proofs for logarithmic, exponential, and power functions, deriving d/dx ln x = 1/x, d/dx e^x = e^x, and the power rule via logarithms.
Master implicit differentiation with Python by solving x times y equals one, deriving y prime, and transforming to explicit y while plotting the function and derivative.
Apply implicit differentiation in Python with SymPy to verify derivatives, plot implicit expressions, and solve for y explicitly for both the original function and its derivative.
Engage in a code challenge to differentiate c^x and x^x, using hand methods, verify with Python and sympy, and visualize the function and its derivative on the same plot.
Explore higher order derivatives as derivatives of derivatives, with Leibniz, Lagrange, Newton, and Euler notation. Apply product and chain rules and observe polynomial simplification, curve sketching, and physics applications.
Master higher-order derivatives in Python using NumPy and Senpai, by solving a code challenge that computes the third derivative, plots four subpanels, and verifies identical results.
Learn to compute higher order derivatives in Python using simply, printing first, second, and third derivatives, with a looping approach and optional simplify for cleaner results.
Master L'Hôpital's rule for indeterminate limits using derivatives to replace zero over zero and infinity over infinity. Note the quotient rule distinction and validity conditions, with trig and infinity examples.
Rolle's theorem shows that if a function takes the same value at two points, a point between them has zero derivative, revealing a critical point and foreshadowing mean value theorem.
Explore how the mean value theorem guarantees a point between two points where the derivative equals the secant slope, and see how Rolle's theorem is a special case.
Explore the mean value theorem through Python by implementing a solve mvt function that differentiates symbols, plugs in A and C, and solves for B, with plotting and tangent-line concepts.
Explore the mean value theorem through exercises three and four by implementing functions in Python, plotting results, and addressing numerical challenges, including complex roots and switching to NumPy for approximations.
Learn to approximate the mean value theorem using numpy through a high-density grid search. Evaluate derivatives empirically and match the secant slope to find B values.
Master differentiation with a Python code challenge that combines polynomial and transcendental terms. Practice product, quotient, chain, and implicit differentiation, plus numerical and analytic checks.
Combine the product rule and the chain rule in Python to differentiate a three-function composite, then practice implicit differentiation with plotting and comparisons to hand solutions.
Learners should sample diverse sources and take responsibility for their own calculus understanding, because no single resource fits all and teachers cannot teach you alone.
The beauty and importance of calculus
Calculus is a beautiful topic in mathematics. No, really!
At its heart, calculus is about change. Life is full of change, and calculus is the language that humans developed (invented or discovered -- that's an ongoing debate!) to understand how physical, biological, and abstract systems change. Calculus is more than just some equations you have to memorize; it's a way of looking at the world and trying to understand how the tiniest infinitesimal changes can lead to gigantic complexity bigger than the imagination.
OK, but aside from all that fluff, calculus is also really important for basically every piece of engineering and digital technology that has touched humanity. Indeed, the history of calculus is the history of civilization.
You want to learn data science? => You need calculus.
You want to learn machine-learning? => You need calculus.
You want to learn deep learning? => You need calculus.
You want to learn computational science? => You need calculus.
You want to learn... I think you see the pattern here ;)
Why learn calculus?
There are three reasons to learn calculus.
It has applications for understanding data science and machine-learning algorithms, but it's also a beautiful topic in its own right.
Learning math will train your critical thinking and reasoning skills. Any branch of mathematics will train your brain, but calculus especially so, because doing calculus is a lot of like running scientific experiments -- generate hypotheses, test them in experiments by holding variables constant, and measuring the output.
It's a better hobby than sitting around watching netflix. Seriously. Learning math will help protect you from age-related cognitive decline. Challenge your mind to keep it sharp!
Learn calculus the traditional way or the modern way?
So, how do you learn calculus? You can learn it the way most people do -- by watching someone else scratch on a chalkboard while you furiously take notes and try to decipher their sloppy handwriting, all the while having a little voice in your head telling you that you don't get it because you're not smart enough.
Or you can try a different approach.
I follow the maxim "you can learn a lot of math with a bit of coding." In this course, you will use Python (mostly the numpy and sympy libraries) as a novel tool to help you learn concepts, proofs, visualizations, and algorithms in calculus.
There are three reasons to use Python to learn calculus:
Practical applications: Calculus is essential for understanding data science, machine learning, deep learning, computational science, and many other fields.
Mental exercise: Learning calculus, particularly in combination with Python, will train your critical thinking and reasoning skills.
Lifelong benefits: Engaging your mind with calculus can help protect against age-related cognitive decline and offer a fulfilling alternative to passive leisure activities.
So this is just about coding math?
No, this course is not about coding math. And it's not about using Python to cheat on your math homework. Python's symbolic math and plotting engines are incredibly powerful -- and yet underutilized -- tools to help you learn math. By translating formulas into code, implementing algorithms, and solving challenging coding exercises, you will gain a deep knowledge of concepts in calculus.
And the graphics engine in Python will let you see equations and functions in a way that helps you develop intuition for why functions behave the way they do.
You will also learn the limits of computers for learning calculus, and why you still need to use your brain and freshly developed calculus skills.
New to Python?
Python is a versatile and user-friendly programming language that complements calculus, especially when using libraries like NumPy and SymPy. By incorporating Python into your calculus studies, you can gain a deeper understanding of mathematical concepts, proofs, visualizations, and algorithms.
If you are new to Python, then don't worry! This course comes with a 7+ hour Python coding tutorial (potentially up to 12 hours if you complete all the exercises) that is designed for beginners and will teach you the coding skills you'll need for this course.
Are there exercises?
Everyone knows that you need to solve math problems to learn math. This course has exercises for you to solve in nearly every video -- and I explain the answers to every single exercise (not only the odd-numbered ones, lol).
But wait, there's more! I don't just give you problems to work on; I will teach you how to create your own exercises (and solutions) so you can custom-tailor your own homework assignments to practice exactly the skills you most need to work on. Because you know, "give someone a fish" versus "teach someone to fish."
Is this the right course for you?
One thing I've learned from 20+ years of teaching is that no two learners are the same, which means that no course will be right for everyone. I hope you find this course a valuable learning resource -- and fun to work through! -- but the reality is that this course won't be ideal for everyone. Please watch the preview videos and check out the reviews before enrolling.
And if you enroll but then decide that this course isn't a good match for you, then that's fine! Check out Udemy's 30-day return guarantee.