Explore 305+ lessons across Python, Mathematics, and Machine Learning. Every lesson enforces genuine mastery - no skipping ahead, no 70% passes, no gaps.
Learn the difference between the Python Editor and Console in Nodeledge and how to use each for writing, running and submitting Python code for interactive questions.
Gain a clear understanding of what Python is, how its structure (including syntax and semantics) defines valid programs, and how the Python interpreter reads and executes instructions sequentially.
Learn how to use Python's print() function to display text and values, include multiple arguments, and customise output formatting using the sep and end arguments.
Learn how to use single and multi-line comments in Python to document code effectively and understand best practices for writing clear, useful comments that enhance code readability and maintainability.
Understand what Python keywords are, recognise their role in structuring code, and identify common mistakes such as misspelling, omitting or misusing keywords that lead to syntax errors.
Learn how Python relies on indentation to define code blocks, understand how correct and consistent indentation is essential in structures like if statements and loops, and see how the pass statement can be used as a placeholder to avoid errors in empty blocks.
Understand variables as references to objects in Python, see how assignment works, recognise fundamental data types such as integers, floats, strings, booleans and lists, and that everything is treated as an object.
Learn how Python treats everything as an object, how to identify an object's type with type(), and how to access and use object attributes and methods via dot notation.
Learn how to create and reassign variables using the assignment operator in Python, understand dynamic typing and how variable types can change at runtime, and apply the rules and conventions for naming variables effectively.
Learn how to define integer values in Python by assigning whole numbers, including both positive and negative numbers, and use underscores to improve the readability of large integers.
Learn how to define floating-point numbers in Python using decimal and scientific notation, understand why floats can be imprecise due to their binary representation, and use the round() function to control the number of decimal places displayed.
Understand how Python represents truth values with the boolean constants True and False, how to use the logical operators and, or and not to combine or negate boolean values, and how operator precedence affects the evaluation of complex boolean expressions.
Learn how to create strings using different types of quotes, combine and repeat strings with operators, and use basic string methods for transforming and searching text in Python.
Learn how to use Python f-strings to embed variables and expressions directly into strings for clear and concise output formatting.
Understand how to use Python's arithmetic operators to perform calculations, combine them following operator precedence, and compute integer quotients and remainders using floor division and modulus.
Understand how to convert between Python types using built-in functions, including how implicit and explicit conversions work and the rules for converting between strings, integers, floats, and booleans.
Practise working with strings, integers, floats and booleans by writing four functions that fill in a customer's name, birth year, account balance and promotion eligibility.
Understand what lists are in Python, how to create them using literal values of various types including nested lists, and how to determine their length using the len() function.
Learn how to use zero-based and negative indexing to access elements in a Python list and understand what causes an IndexError when accessing invalid indices.
Learn how to update individual elements or slices of a Python list using indexing and slicing, including replacing sections with iterables of different lengths.
Learn how to add elements to Python lists using the append, extend and insert methods to control both the content and position of inserted items.
Learn how to combine two or more Python lists into a new list using the + operator, preserving the order of elements and leaving the original lists unchanged.
Learn how to remove elements or slices from a Python list using del, .pop(), .remove(), and slice assignment to modify the list's contents.
Learn how to use Python lists and their associated methods to create, modify, and combine playlists by adding, updating, and removing songs.
Understand what makes a tuple distinct from a list in Python and learn how to correctly create tuples of any size using literal values, including cases with no elements or only one element.
Learn how to access individual elements in a tuple using indexing, determine its length with len(), and retrieve subsets of elements through slicing, using the same syntax as with lists.
Understand that while tuples in Python are immutable containers whose elements cannot be changed, added, or removed, the contents of mutable objects stored within a tuple can still be modified, which can lead to unexpected side effects.
Develop a Python program that allows users to build, update and customise a travel itinerary by adding destinations, activities and planning short trips.
Learn how Python dictionaries store data as mutable key-value pairs, see how to create dictionaries with literal values, and use the len() function to determine their size.
Learn how to retrieve values from a Python dictionary using both square bracket notation and the .get() method, including how to handle missing keys without causing errors.
Learn how to use the in and not in keywords to check whether a given key exists in a Python dictionary.
Learn how to update, add, and delete dictionary entries in Python using assignment and the del statement, as well as the rules that determine which objects can be used as keys.
Learn how to iterate over a dictionary's keys, values, or key-value pairs in Python using built-in methods to access and process the information efficiently.
Python dictionaries preserve the order in which items are inserted, so iterating over a dictionary yields key-value pairs in insertion order rather than in an arbitrary sequence.
Learn how to merge the key-value pairs of two dictionaries in Python using the .update() method, which adds new keys and overwrites existing ones in place.
Practise implementing a simple Python-based library management system by writing code to check book availability, add new books, lend books, list available books, and merge library collections.
Understand the unique, unordered nature of Python sets, how to create them from various iterables, and how to determine their size using the len() function.
Learn how to add elements to a set and remove them using .remove() or .discard(), understanding how each method handles missing elements and duplicates.
Learn how to use a for loop to access each element in a Python set, noting that the elements may appear in any order due to the set's unordered nature.
Learn how to use the union, intersection and difference operations to combine, compare and subtract sets in Python using both methods and operators.
Learn how to determine whether one set is a subset or superset of another, including proper subsets and supersets, and use Python operators to perform these set comparisons.
Practise using Python lists and sets to track unique animal species, update records, find overlaps and differences between groups, and perform calculations with animal data in a nature reserve context.
Learn how to control program flow in Python using if and else statements, applying correct indentation to execute different code blocks based on whether conditions are true or false.
Learn how to use the elif statement in Python to handle multiple branching conditions in decision-making, ensuring only the first true condition executes its associated code block.
Understand how to construct and interpret nested conditionals in code to handle complex decision-making scenarios that depend on multiple related conditions.
Learn how to use Python's conditional ternary operator to assign values based on a condition in a concise, readable way.
Learn how to build a decision engine for a text-based adventure game by writing logic that checks player health, inventory, and weather conditions to determine the next appropriate action.
Variables and object references
View preview
Learn to use Python's relational operators to compare numeric values and interpret the resulting boolean outcomes.
Learn the difference between object value equality using == or != to compare stored values and object identity equality using is or is not to determine whether two variables refer to the same object in memory.
Understand the meaning of None in Python, its singleton nature, its type, how to compare objects to None using is, and its behaviour in boolean contexts.
Learn how to use the in and not in operators in Python to check whether a value is present in a list, tuple, set, string or as a key in a dictionary, based on value equality.
Learn how to construct complex boolean expressions in Python by chaining multiple comparisons and mixing logical and membership operators to evaluate compound conditions clearly and concisely.
Learn how Python determines the truth value of objects in boolean contexts, distinguishing between "truthy" and "falsy" values such as zero, empty collections, and None.
Work through a sequence of Python programming challenges that progressively unlock levels of a secret vault, requiring careful validation of both logic and code output at each stage.
Understand what defines a sequence in Python, including how to measure its length, access elements using zero-based and negative indexing, and distinguish between homogeneous and heterogeneous types.
Learn how to extract subsequences from lists, tuples or strings in Python using the slicing syntax with different start and stop indices, creating new sequences without modifying the originals.
Learn how to use Python sequence slicing with a step value to select elements at fixed intervals or in reverse order.
Learn how to assign multiple variables at once by unpacking the elements of a sequence such as a tuple, list or string directly in Python.
Understand how Python's for loop iterates over elements in sequences such as lists, tuples and strings, and how the range() function can control loop repetition for a specified number of iterations.
Understand how to use Python while loops to repeatedly execute code until a specified condition is met, and recognise the importance of updating loop variables to avoid infinite loops.
Learn how to control loop execution in Python using the continue statement to skip iterations, the break statement to exit early, and the else clause to run code only if the loop completes without a break.
Learn how a nested for loop executes by having the inner loop complete all its iterations for each run of the outer loop, and use this structure to process complex data like lists of lists.
Write Python code to organise a space expedition by generating a task list, tracking supplies, assigning crew tasks, and summarising mission activities.
Learn how to use list comprehensions in Python to construct new lists by applying an expression to each item in an iterable in a concise and readable way.
Learn how to use list comprehensions with if and if-else statements in Python to filter elements or apply different logic to each item based on a condition.
See how to use set comprehensions in Python to generate sets from iterables with optional filtering and transformation, producing collections of unique values.
Learn how to construct dictionaries concisely using dictionary comprehensions with optional filtering and key or value transformations based on iterables or existing dictionaries.
Apply programming techniques to solve practical problems by writing Python code that locates safe zones, distributes supplies, constructs barricades, and plans evacuation routes in a simulated zombie apocalypse scenario.
Understand what built-in functions in Python are and see how to use the abs() function to find the absolute value of numbers regardless of their sign.
Learn how to use Python's sorted() function to create sorted lists of numbers or strings in ascending or descending order, and see how case sensitivity affects the sorting of strings.
Learn how to use Python's built-in min(), max(), and sum() functions to efficiently find the smallest, largest, and total values in collections of numbers.
Learn how to use Python's built-in all() and any() functions to determine whether all or any elements in an iterable are true, and understand the behaviour of these functions with different types of elements and empty iterables.
Learn how the enumerate() function in Python allows simultaneous iteration over items and their indices, with the option to specify a custom starting index for the counter.
Practise writing Python code to calculate distances, assign values and difficulty levels, interpret clues, and summarise locations in a treasure hunt scenario.
Understand how functions allow code to be organised into reusable blocks, how to call both built-in and user-defined functions with arguments, and how to use or store the values functions return.
Learn how to read and interpret a function's signature in Python, distinguish between required and optional parameters, and use both positional and keyword arguments to call functions correctly.
Learn how to define and use functions in Python by specifying parameters, implementing logic in the function body, and returning values to make code reusable and robust against invalid input.
Learn how to define Python functions with default argument values so that some parameters can be omitted during a function call, and understand the rule requiring all non-default parameters to precede those with default values to prevent ambiguity.
Understand how Python functions can return no value (resulting in None), use multiple return statements to exit at different points with specific values, and return multiple values at once as tuples, including best practices for consistency and clarity.
Understand how local variables exist only within a function's scope, how global variables are accessible throughout a program, and how to correctly access or modify global variables from within functions using the global keyword.
Learn how to document Python functions using docstrings, describe their parameters and return values clearly, and access this documentation programmatically or with the built-in help() function.
Learn how to define anonymous, single-expression functions using the lambda keyword in Python and apply them directly as inline functions.
Learn how recursion allows a function to solve problems by calling itself with simpler inputs, how base cases prevent infinite loops, and how recursive definitions can elegantly capture problems like factorial and Fibonacci sequences.
Learn how to implement a simple voting system in Python by writing functions to register votes, count them, determine the winner, and summarise the election results.
Learn how classes define the structure and behaviour of objects in Python, how to create independent instances from a class, and how each instance maintains its own separate state.
Learn how to define a custom class in Python using the class keyword and apply CamelCase naming conventions to ensure clarity and consistency in your code.
The __init__() method
View preview
Learn how to define instance attributes in Python classes by assigning values to self within the __init__() method, and how to access or modify these attributes for each object using dot notation.
Learn how to define and use instance methods in Python classes to operate on object data, including how to access attributes with self, pass additional arguments, return values, and call one method from another within the same class.
Understand how Python modules and packages organise code for reuse, and learn to import and use functions from the Python standard library in your own programmes.
Learn how to import Python modules using aliases with the as keyword to simplify code and how to import specific functions or constants directly from a module, enabling cleaner and more concise usage within your scripts.
Learn how to import and use third-party Python libraries in your code to efficiently access advanced features beyond the standard library, and find guidance for their use through documentation and help functions.
Learn how to distinguish between mutable and immutable objects in Python by understanding how each type handles changes to its internal state after creation.
Learn how to use augmented assignment operators in Python to efficiently update variable values, especially for simplifying operations within loops.
Learn how to convert between different Python data structures using the built-in list(), tuple() and set() functions and understand how these conversions affect properties like uniqueness and order.
Understand how in-place operations modify mutable objects directly in their current memory location without creating new objects, and see the consequences of assigning the result of such methods.
Learn how Python raises exceptions for runtime errors, how to use try-except blocks to prevent crashes, and why catching specific exception types results in safer and more reliable error handling.
Learn how Python matches exceptions in multiple except blocks based on their order and hierarchy, why specific exception types should appear before general ones, and how exceptions propagate up the call stack until handled.
Learn how to use the input() function to receive user input as a string and correctly convert input values to numbers with int() or float() for arithmetic operations.
Learn how binary, octal, and hexadecimal number systems work, how to convert between them and decimal, and how to use Python to represent and process numbers in these bases.
Learn how bitwise operators manipulate numbers at the level of individual bits using AND, OR, XOR, NOT and shift operations, and how these operations correspond to changes in binary representation and integer values.
Learn how Python decides the order in which operators are evaluated in expressions, distinguishing between operator precedence (when operators have different priorities) and binding or associativity (when operators have equal precedence), and correctly apply these rules to both unary and binary operators.
Understand what NumPy arrays are, why they are used for efficient numerical computation, and how to create 1D and 2D arrays in Python using NumPy functions.
Understand how NumPy arrays strictly store data of a single, fixed data type for efficiency, and learn to inspect an array’s type, shape, number of dimensions, and total size using key array attributes.
Learn how to change the shape of NumPy arrays using .reshape(), ensuring the total number of elements stays the same, and use -1 to let NumPy automatically infer one dimension when reshaping or flattening arrays.
Learn how to index and slice NumPy arrays to access individual elements, rows, columns, and subarrays across any number of dimensions, understanding the roles of integers and colons as indices.
Learn how to select elements from a NumPy array that meet specified conditions by creating and applying boolean masks, including combining multiple conditions using bitwise operators for complex filtering.
Learn how NumPy applies arithmetic and comparison operations element-wise to arrays, how universal functions (ufuncs) perform fast vectorised operations on arrays of any shape, and how boolean arrays result from element-wise comparisons.
Learn how to use NumPy aggregation functions to summarise whole arrays or reduce them along one or more axes, allowing flexible calculation of sums, means and other statistics across specific array dimensions.
Learn how NumPy broadcasting enables element-wise operations between arrays of different shapes, understand the rules that determine when broadcasting is possible, and see how techniques like using keepdims=True during reduction operations ensure broadcast compatibility.
Learn how Pandas Series store one-dimensional labelled data, how to create Series from lists, dictionaries or arrays, and how to access elements by position or by label using .iloc and .loc.
Learn how to create Pandas DataFrames from dicts or lists, inspect their content and structure using built-in methods, and access key metadata such as shape, columns and data types.
Learn how to load tabular data from CSV files into Pandas DataFrames using pd.read_csv(), and how to export DataFrames back to CSV format using .to_csv().
Learn how to select columns from a Pandas DataFrame using label-based access, use .iloc for positional indexing and .loc for label-based indexing of rows and columns.
Learn how to filter Pandas DataFrames by applying single or multiple conditions using boolean masks and logical operators to select specific rows and columns.
Learn how to detect, count and locate missing values in Pandas DataFrames, then handle them by either dropping incomplete rows or columns or by filling missing entries with appropriate replacement values using built-in methods and parameters.
Learn how to rename columns, set DataFrame indices, change column data types for analytical correctness and efficiency, and create or transform columns using arithmetic and string operations in Pandas.
Learn how to use the Pandas .apply() method to execute custom functions on DataFrame columns or rows, including with lambda functions, enabling flexible transformations that go beyond built-in vectorised operations.
Learn how to quickly summarise pandas DataFrames using built-in aggregation methods, and use .groupby() to compute statistics for single or multiple groups.
Learn how to read and interpret inequality symbols (<, >, ≤, ≥), translate everyday language into inequality notation, and determine whether values satisfy compound inequalities like a<x≤b.
Learn how to solve linear inequalities by isolating the variable, applying the sign-flip rule when multiplying or dividing by a negative number.
Interval notation
View preview
Learn the definition of absolute value as distance on the number line, apply the product and quotient rules to simplify expressions, and verify the triangle inequality for specific values.
Learn how to solve absolute value equations by splitting into cases, and absolute value inequalities by converting to compound inequalities expressed in interval notation.
Learn how to recognise the standard form ax2+bx+c=0, factor quadratic expressions by finding two numbers with the right sum and product, and solve the equation using the zero product property.
Learn how to solve any quadratic equation using the quadratic formula, and use the discriminant to determine how many real solutions an equation has.
Learn how to recognise a perfect square trinomial from its coefficients, and rewrite any monic quadratic in completed-square form.
Learn to identify quadratic equations with no real solutions by computing the discriminant, understand why a negative discriminant means no real square root exists, and connect this to the geometric picture of a parabola that does not cross the x-axis.
Learn what sets are, how to list their elements using curly brace notation, use membership symbols ∈ and ∈/, and recognise the empty set ∅.
Learn the standard number sets N, Z, Q, and R, understand their containment relationships, and use superscript notation for restricted sets like Z+.
Learn to read and write set-builder notation {x:condition} to describe sets by a rule rather than listing elements, and specify domains using {x∈S:condition}.
Learn subset notation ⊆ and ⊂, prove set equality by showing mutual containment, and compute cardinality ∣A∣ for finite sets.
Set union and intersection
View preview
Set complements
View preview
Learn to identify when a collection of sets forms a partition of a universal set - pairwise disjoint and exhaustive - and recognise common partitions including the complement partition {A,Ac}.
Learn what exponentiation means as repeated multiplication, evaluate small positive integer powers by hand, and predict the sign of a negative base raised to an even or odd exponent.
Learn the product rule for exponents - when multiplying powers with the same base, add the exponents - and apply it to expressions with numerical coefficients and multiple variables.
Learn three key exponent rules: the quotient rule for dividing powers with the same base, the power-of-a-power rule for raising a power to another power, and the power-of-a-product rule for distributing an exponent across factors.
Learn why any non-zero number raised to the power zero equals one, how negative exponents represent reciprocals, and how to simplify expressions by rewriting negative exponents as positive.
Learn what square roots are and how they relate to squaring, identify principal and negative roots, and estimate square roots of non-perfect squares.
Learn to split and combine square roots using the product and quotient rules for radicals.
Learn to simplify square roots by factoring out perfect squares, and rationalise expressions to remove radicals from the denominator.
Learn to rationalise a denominator with two terms involving square roots by multiplying by its conjugate, so the difference of squares clears the root.
Learn how fractional exponents connect to roots: the half-power a1/2 equals a, and more generally a1/n equals the nth root of a.
Learn how to evaluate general fractional exponents by combining roots and powers, and apply the product, quotient, and power rules to simplify expressions with fractional exponents.
Learn the definition of a function as a mapping f:A→B that assigns each element of the domain exactly one element of the codomain, and how to identify functions from tables and graphs using the vertical line test.
Learn the f(x) notation for writing and reading functions, interpret expressions like f(3) and f(a) as specific outputs, and use different letters such as f, g, and h to distinguish between multiple functions.
Learn how to evaluate a function at a specific number or algebraic expression by substituting into the function rule, and how to find the input that produces a given output.
Learn how to identify the domain of a function by finding values that cause division by zero or square roots of negatives, and express the domain using interval notation.
Learn what the range of a function is and how it differs from the codomain.
Learn how to compose two functions using the notation f∘g, evaluate compositions at specific inputs, and determine when a composition is defined by checking that the output of the inner function lies in the domain of the outer function.
Understand what an inverse function is, how the domain and range swap, and how to verify an inverse using composition.
Learn how to find inverse functions algebraically by swapping and solving, apply the procedure to linear functions, and understand why the graph of an inverse is a reflection across the line y=x.
Learn what it means for a function to be one-to-one, identify one-to-one functions using the definition or counterexamples, and apply the horizontal line test to determine whether a function is one-to-one from its graph.
Learn why a function must be one-to-one to have an inverse, use the horizontal line test to determine invertibility, and make non-invertible functions invertible by restricting their domains.
Learn how to classify a function as even, odd, or neither using the algebraic test f(−x)=±f(x), and read the same parity off a graph by recognising y-axis or origin symmetry.
Learn how to read and evaluate piecewise function definitions by applying the rule whose condition matches the input, and sketch piecewise graphs using closed and open dots to mark whether each endpoint is included.
Learn to read and write sigma notation - the compact mathematical shorthand for expressing sums.
Learn how to expand and evaluate sigma expressions by substituting each index value into the general term, including sums with powers and fractional terms.
Learn the rules for pulling out constant factors and splitting sums of additions or subtractions into separate sigma expressions.
Learn the closed-form formulas for the sum of the first n integers and the sum of the first n squares.
Learn to evaluate the sum of a constant term and to evaluate compound sigma expressions with linear and quadratic terms by decomposing them and substituting the formulas for ∑i and ∑i2.
Learn to re-index sigma expressions by shifting the starting value, match a sum to a named expression through re-indexing, and determine whether two sums are equal by re-indexing one to match the other.
Learn the product operator and how to read, expand, evaluate, and write expressions in product notation.
Learn how to define and evaluate factorials, apply the recursive property, and simplify expressions involving factorial fractions.
Learn how to express unions and intersections of indexed set families using compact notation, and expand and compute these operations for rule-defined collections of sets.
Learn to distinguish mathematical statements (sentences that are definitively true or false) from non-statements such as questions, commands, and opinions, and recognise open sentences whose truth value depends on a variable.
Learn how mathematical "and" requires both parts to hold and mathematical "or" requires at least one part to hold, including why "or" in mathematics is always inclusive.
Learn how negation flips truth values and how to negate compound "and" and "or" statements using De Morgan's laws.
Learn to read conditional statements of the form "if P then Q", identify the hypothesis and conclusion, and understand that a conditional makes no claim when its hypothesis is false.
Learn how to form the converse of a conditional by swapping hypothesis and conclusion, and determine whether the converse is true or false using counterexamples.
Learn how to form the contrapositive of a conditional by negating both parts and swapping them, and use the fact that a conditional and its contrapositive always share a truth value.
Learn how to translate between conditional statements and the language of necessary and sufficient conditions, and classify conditions as necessary, sufficient, both, or neither.
Understand biconditional statements (if and only if), recognise that definitions are always biconditionals, and distinguish definitions from theorems that only guarantee one direction.
Learn to read and interpret universal statements ("for all") and existential statements ("there exists"), and recognise that mathematical conditionals containing variables are universal statements in disguise.
Learn how negating a universal statement ("for all") produces an existential statement ("there exists") and vice versa, and apply these rules to negate mathematical claims.
Learn why the only way a conditional "if P then Q" can be false is when P is true and Q is false, and use this to find counterexamples to conditional claims involving variables.
Learn how to apply three fundamental inference rules - modus ponens, modus tollens, and elimination - to draw valid conclusions from given premises, and recognise common fallacies like the converse error.
Learn what an exponential function is, how the base a determines whether the function grows or decays, and what the graph of f(x)=ax looks like.
Understand e≈2.718, the limiting value of (1+1/n)n, and the natural exponential function ex that underpins growth models across mathematics and machine learning.
Learn what loga(x) means as the inverse of ax, how to convert between exponential and logarithmic form, and how to evaluate logarithms like log3(27) by inspection.
Learn how to simplify expressions using the two inverse identities loga(ax)=x and aloga(x)=x, recognising when a composition of a logarithm and its matching exponential cancels.
Learn the common logarithm log(x)=log10(x), the natural logarithm ln(x)=loge(x), and how to use the inverse identities ln(ex)=x and elnx=x to simplify expressions.
Learn how to convert products and quotients inside a logarithm into sums and differences of logarithms using the product and quotient rules, and bring exponents down as coefficients using the power rule.
Learn how to apply the product, quotient, and power rules to expand a single logarithm into a sum or difference, combine several logarithms into one, and simplify expressions that mix logs with ex and ln.
Learn how to convert a logarithm from one base to another using the change of base formula, use the reciprocal relationship to relate logs with swapped bases, and relate logs with different bases when one is a power or root of the other.
Learn how to solve exponential equations for an unknown exponent by applying the matching logarithm when the base allows it, or by taking the logarithm of both sides and using the power rule to pull the exponent down.
Learn how to measure angles in degrees (as a fraction of a full turn) and in radians (where π radians equals 180°), and practise converting between the two systems.
Learn how to label the sides of a right-angled triangle (hypotenuse, opposite, adjacent) and learn the sine, cosine, and tangent ratios that link an acute angle to those side lengths.
Learn how to derive the exact trigonometric values at the special angles 30∘, 45∘, and 60∘.
Learn the side ratios of the 45∘-45∘-90∘ and 30∘-60∘-90∘ triangles, and use them to find the exact trigonometric ratios at those angles for a triangle of any size.
Learn how to draw angles on the coordinate plane, identify their quadrants, and switch between equivalent measures of the same rotation in both degrees and radians.
Learn how angles on the coordinate plane correspond to points on the circle of radius 1, why those coordinates are exactly the cosine and sine of the angle, and how to relate any angle back to its acute form.
Learn how to evaluate sine and cosine for any angle, including obtuse, negative, and angles exceeding one full revolution, by combining the reference angle with quadrant signs.
Graphs of sine and cosine
View preview
Learn how to define tangent as sinθ/cosθ, read key features from its graph, and evaluate it at special angles.
Learn how to evaluate secθ, cosecθ and cotθ as reciprocals of cosine, sine and tangent, and identify the angles at which each one is undefined.
Learn how to derive sin2θ+cos2θ=1 from the unit circle, and use it to find one trigonometric ratio given the other and the quadrant.
Learn how to restrict sin to a domain where it is one-to-one, and use the resulting arcsin function to recover an angle from its sine.
Learn how to restrict cos to a domain where it is one-to-one, and use the resulting arccos function to recover an angle from its cosine.
Learn how to restrict tan to a domain where it is one-to-one, and use the resulting arctan function to recover an angle from its tangent.
Understand how data can be represented as vectors, how to visualise and interpret vectors in two dimensions, calculate their magnitude, and convert them into unit vectors through normalisation.
Understand how to add, subtract and scale two-dimensional vectors componentwise and use these operations to form linear combinations, which are fundamental to representing and manipulating data in machine learning.
Learn how to add, subtract and scale n-dimensional real vectors entrywise, and construct linear combinations by applying these operations in any number of dimensions.
Dot product and vector norm
View preview
Learn how to test whether pairs or sets of vectors are orthogonal (dot product zero) or linearly dependent (one is a scalar multiple or linear combination of others), and understand the implications of these properties for redundancy and uniqueness in feature spaces such as those used in machine learning.
Understand how the span of a set of vectors describes all the points reachable by their linear combinations, how to determine if a given vector lies within this span, and how to check if a set of vectors spans the entire space RN using row reduction.
Learn how to calculate the scalar and vector projection of one vector onto another in any dimension, interpret their geometric meaning, and understand their importance in measuring how much a vector aligns with a chosen direction, especially in machine learning contexts.
Understand how bases provide reference directions for vector spaces and see how orthonormal bases simplify the representation of vectors and calculations such as finding coordinates using dot products.
Learn how to represent a vector in different bases by finding its coordinates relative to any basis and use the basis matrix and its inverse to convert between these coordinate systems and the standard basis.
Understand how matrices organise data into rows and columns, how their dimensions are specified, how vectors fit into this framework as one-row or one-column matrices, and how to identify individual entries using subscript notation.
Learn how to perform the transpose operation on matrices and vectors, understand its key properties (including behaviour under addition, subtraction and multiplication), and see how the transpose links matrix operations with the inner (dot) product in vector spaces.
Learn how to add, subtract and scale matrices entrywise, and use these operations to form linear combinations of matrices with the same dimensions.
Learn how to multiply a matrix by a vector by taking a dot product of each row with the vector, understand the necessary dimension requirements for valid multiplication, and see how this operation underpins key transformations and predictions in machine learning models.
Learn how to determine when the product of two matrices is defined, compute the result using the row-by-column dot product rule, identify the dimensions of the resulting matrix, and recognise that matrix multiplication is not commutative.
Understand the identity matrix as the square matrix with ones on the diagonal and zeros elsewhere, which leaves any matrix or vector unchanged when multiplied, analogous to multiplying by one in arithmetic.
Learn how to compute the determinant of a square matrix using specific formulas and cofactor expansion, and interpret its value as indicating both invertibility and the signed area (or volume) scaled by the matrix.
Understand how the column space of a matrix defines the set of possible outputs Ax, how the rank measures the number of linearly independent columns, and how these concepts determine whether a system Ax=b has solutions, how many solutions, and whether a square matrix is invertible.
Learn how the null space of a matrix captures all solutions to Ax=0, how it determines the structure of all solutions to Ax=b, how to find a basis for the null space by solving a homogeneous system, and how the rank-nullity theorem links the number of independent columns to the number of free variables.
Matrices as linear transformations
View preview
Understand the definition of orthogonal matrices, recognise their appearance in rotation and reflection matrices, and see how these matrices preserve vector lengths, dot products, and geometric structure by satisfying QTQ=I and having inverses equal to their transposes.
Learn how to represent a system of two linear equations and solve it algebraically using both the substitution and elimination methods to find the values that satisfy both equations simultaneously.
Learn how to determine whether a system of two linear equations has a unique solution, no solution, or infinitely many solutions by analysing the relationships between their coefficients and interpreting the geometric meaning of each case.
Learn how to rewrite a system of linear equations as a matrix equation and as an augmented matrix, and how to convert between augmented matrices and their corresponding systems of equations by matching coefficients and constants to variables in a consistent order.
Learn how to use elementary row operations to systematically transform an augmented matrix into row echelon form via forward elimination, laying the groundwork for solving systems of linear equations by back substitution.
Learn how to use Gaussian elimination by combining forward elimination and back substitution to solve systems of linear equations, and determine whether a system has a unique solution, infinitely many solutions, or no solution from the row echelon form.
Learn how to determine whether a 2×2 matrix is invertible and, if so, find its inverse using row reduction, connecting these concepts to solving systems of linear equations in machine learning.
Learn the core rules for finding inverses of matrix products, transposes, scalar multiples, and diagonal matrices, enabling efficient simplification and manipulation of matrix equations.
Understand how symmetric matrices can always be diagonalised using an orthogonal basis of eigenvectors, leading to real eigenvalues and mutually orthogonal principal directions - crucial properties for applications such as principal component analysis and covariance matrices in machine learning.
Learn how to determine whether a 2×2 matrix is diagonalisable by finding its eigenvalues and eigenvectors, construct its diagonalisation if possible, and use this to efficiently compute powers of the matrix.
Learn how to set up and solve the characteristic equation for a 2×2 matrix in order to calculate its eigenvalues, understanding their significance in matrix transformations and machine learning applications.
Learn how to set up and solve the eigenvector equation (A−λI)v=0 for a given 2×2 matrix and its eigenvalues, and understand why eigenvectors are only determined up to a non-zero scalar multiple.
Eigenvalues and eigenvectors of 2×2 matrices
View preview
Eigendecomposition expresses a diagonalisable matrix as A=PDP−1, revealing that in the eigenvector basis A acts as simple scaling, so applying A to any vector can be understood as changing basis to the eigenbasis, scaling by the eigenvalues, then changing back.
Understand why the classical eigendecomposition fails for many matrices, see how singular values are defined as the square roots of the eigenvalues of ATA, and recognise that ATA is always square, symmetric, and has non-negative eigenvalues, ensuring that singular values are always real and non-negative for any matrix.
Learn how any real matrix can be factorised into orthogonal matrices and a diagonal matrix using the singular value decomposition, and how to compute its right and left singular vectors and singular values via the eigenvectors and eigenvalues of ATA and AAT.
Learn how to calculate the singular value decomposition of small matrices by finding singular values and singular vectors, assembling the U, Σ, and V matrices, and using orthonormal completion when matrices are rectangular.
Interpreting the SVD
View preview
Learn how to describe a limit as the value a function approaches near a point, write it in limit notation, distinguish the limit from f(a), and recognise when a limit fails to exist.
Learn how to estimate a limit numerically by building a table that closes in on the target from both sides, and recognise when the table is unreliable.
Reading limits from graphs
View preview
Learn how to state and apply the constant and identity limits and the sum, difference, and constant-multiple limit laws, then chain them to decompose a polynomial limit step by step into a number.
Learn how to state and apply the product and quotient limit laws to evaluate limits of products and quotients.
Learn how to state and apply the power and root limit laws to evaluate limits of powers and roots.
Learn how to decompose a compound limit by working from the outermost operation inwards, applying the matching law at each step and checking its condition where one applies, until only basic limits remain.
Learn how to evaluate a limit by direct substitution when its conditions hold, giving x→alimf(x)=f(a), and recognise when substitution fails as the indeterminate form 0/0 or the non-existent form c/0.
Learn how to resolve a limit that direct substitution leaves as 0/0, either by factoring and cancelling a shared factor or by rationalising a square root with its conjugate, then substituting into the simplified form.
Learn how to compute the one-sided limits x→a−limf and x→a+limf by evaluating the branch that applies on each side, then decide whether the two-sided limit exists by checking whether the two sides agree.
Learn how to evaluate infinite one-sided limits by reading the sign of the function near the point, and how to locate the vertical asymptotes of a rational function at the denominator zeros that do not cancel.
Learn how to evaluate limits as x→±∞, reading a polynomial's end behaviour off its leading term and a rational function's limit by dividing by the highest power of x and comparing the degrees of the numerator and denominator.
Learn how to find a function's horizontal asymptotes from its limits as x→±∞, and why a graph may cross an asymptote that only describes its end behaviour.
Learn how to test whether a function is continuous at a point using its three conditions, classify a discontinuity as removable, jump or infinite by which condition fails, and decide when a composition of continuous functions is continuous.
Learn how to repair a removable discontinuity by defining the function to equal its limit at the hole, and how to choose a parameter that makes a piecewise function continuous by matching its rules at a boundary.
State the Intermediate Value Theorem, check its hypotheses on a closed interval, and apply it to guarantee that a value or a root exists between two endpoints of opposite sign.
Learn how to compute the average rate of change of a function over an interval, interpret it as the slope of a secant line, and see why the average depends on the interval chosen.
Find how fast a function is changing at a single instant by watching average rates over shrinking intervals settle on one value, and read that instantaneous rate of change as the slope of the tangent line.
The derivative at a point
View preview
Extend the derivative from a single point to a function: find f′(x) from the limit definition for polynomials and evaluate it to get the slope at any point, then sketch the graph of f′ from the graph of f.
Recognise where a function fails to be differentiable - at corners, cusps, vertical tangents, and discontinuities - and test differentiability at a point by comparing the left-hand and right-hand derivatives.
Learn how to read, write and translate between the different notations for the derivative, and read off its value at a single point.
Learn the first two rules for differentiating by formula: the derivative of any constant is zero, and the power rule for differentiating any power of x. Rewrite roots and reciprocals in exponent form first so the power rule applies.
Learn to differentiate constant multiples, sums and differences: a constant factor passes straight through differentiation, and a sum or difference differentiates term by term. Combine these with the power rule to differentiate any polynomial.
Learn to differentiate a product of two functions with the product rule, and why the derivative of a product is not the product of their derivatives.
Differentiate quotients of functions using the quotient rule, and recognise when a quotient simplifies so the rule is not needed.
Break a composite function into its inner and outer parts, and find an overall rate of change by multiplying the rates of each linked stage.
Differentiate composite functions - powers, roots and reciprocals of polynomials - with the chain rule, and choose the quickest method for a mix of functions.
Differentiate the natural exponential function ex and composite functions eg(x).
Differentiate exponential functions of any base, ax, and composite functions ag(x).
Differentiate the natural logarithm lnx and composite functions lng(x).
Differentiate logarithms of any base, logax, and composite functions logag(x).
Differentiate sinx and cosx, and composite functions sin(g(x)) and cos(g(x)).
Differentiate tanx and composite functions tan(g(x)).
Recognise when a composite function needs the chain rule more than once, and differentiate it by applying the rule once per layer.
Differentiate products and quotients in which one part is a composite function, using the chain rule alongside the product and quotient rules.
Second and higher-order derivatives
View preview
State a high-order derivative of an exponential, a sine or a cosine from the repeating pattern its derivatives follow, instead of differentiating many times.
Find every critical point of a function - the points where f′(x)=0 or f′ has no value - and read from a graph whether each one is a local maximum, a local minimum, or neither.
Find where a curve is concave up or concave down using the sign of the second derivative, and locate the inflection points where its concavity changes.
Use the sign of the first derivative f′ to find where a function is increasing or decreasing, and to classify each critical point as a local maximum, a local minimum, or neither.
Classify a critical point from the sign of f′′, and choose the right test - using the first derivative test when the second is inconclusive (f′′(c)=0) or does not apply (f′(c) undefined).
Learn how to find the largest and smallest values a function reaches on a closed interval are its global extrema. Find them with the closed-interval method: evaluate the function at every critical point and endpoint, then compare.
Learn how to turn a described situation into the two equations an optimisation problem needs: an objective function for the quantity to be made largest or smallest, and a constraint equation for what the situation holds fixed.
Learn how to use the constraint equation to eliminate one unknown, turning a two-variable objective function into a function of a single variable. Then find its domain: the values the remaining variable is allowed to take.
Learn how to find the optimum of an objective function by solving f′(x)=0 and discarding any critical point its domain does not allow. Then certify that optimum as global by comparing its value against the two ends of the domain.
Work an optimisation problem end to end from a written description: build the objective function and the constraint, reduce to one variable, find the domain the situation allows, and confirm the optimum is global before reporting the answer.
Learn what an antiderivative is and how to check one: differentiate the candidate and compare the result with f. Then see why every antiderivative of f has the form F(x)+C.
Learn to read and write the indefinite integral, naming the integrand, variable of integration and constant of integration. Then see why the constant cannot be left off.
Learn the power rule for antiderivatives: raise the exponent by one and divide by the new exponent, which works for every power of x except x−1. Then rewrite roots and reciprocals in power form so the same rule integrates them.
Learn to integrate constant multiples, sums and differences, and to handle a full polynomial term by term with a single constant of integration. Then use one known point to pick out the particular antiderivative from the family.
Learn how to integrate exponential functions by dividing out the constant that differentiation produces, covering the natural exponential, a constant multiple in the exponent, and bases other than e.
Learn to integrate x1, the one power the power rule cannot handle, as ln∣x∣+C. Then see why the absolute value is needed for the antiderivative to cover every x=0, not just the positive half.
Learn to integrate sinx, cosx and sec2x by reversing the derivatives that produce them, placing the minus sign where differentiation created it. Then integrate combinations of these terms, including integrands written in quotient form such as cos2x1.
Learn how to identify random experiments versus deterministic ones, define outcomes and sample spaces using set notation, and construct sample spaces for multi-stage random experiments.
Learn how to represent events as subsets of a sample space, distinguish between simple and compound events, and identify the certain event and the impossible event as the two extremes of any probability model.
Learn what distinguishes machine learning from traditional rule-based programming, how machine learning systems learn from data and improve over time, and how this approach fits within the broader field of artificial intelligence as the dominant method for tasks requiring adaptability and pattern recognition.
Understand how the California Housing dataset represents real-world information as tabular data with rows as block groups and columns as numeric features, recognise different variable types, and see how visualising distributions with histograms reveals patterns in the data.
See how a machine learning model can be trained to predict the median house value in Californian districts based on input features, and how its predictive accuracy is assessed using new data it has not seen before.
Understand the fundamental structure of a supervised machine learning problem by identifying the roles of data (inputs and labels), the model and learning algorithm, and the distinction between the training and inference phases.
Understand the main types of machine learning tasks by distinguishing between supervised, unsupervised, semi-supervised and reinforcement learning, and learn how supervised problems can be classified further as classification or regression based on the nature of the output.
Understand how to analyse real-world problems to determine whether machine learning is appropriate, frame problems as classification or regression based on the desired output, and identify suitable inputs, outputs, and learning setups for effective model design.
Understand why the primary aim of supervised learning is to build models that generalise well to unseen data, and how test sets are used to estimate generalisation error as opposed to training error.
Understand the full lifecycle of machine learning projects, from defining the problem and preparing data to deploying and monitoring models, and recognise that successful ML development relies on iterative cycles of evaluation, diagnosis and refinement.
Learn how to correctly split a dataset into separate training, validation, and test sets, ensuring representative distributions and strict separation to prevent data leakage, in order to support fair model development and unbiased evaluation in supervised machine learning.
Understand how to extract, create, and transform features from raw data to ensure machine learning models receive clean, structured, and informative inputs that improve predictive performance.