Always free. For everyone.
CONTROL ENGINEERING · FREE AND OPEN

From feedback fundamentals to a complete control design.

A free Control Engineering course: 20 modules, 60 lessons, 20 guided simulation practicals, 120 quiz questions, and six projects with downloadable notebooks.

Start the first lesson
20 modules60 lessons20 guided practicals6 projects48 lesson hours
Before you begin: prerequisites, tools, and learning plan

For engineering students and curious builders. Begin with basic algebra and Python variables, functions, and loops. Calculus, complex numbers, and matrices are introduced as they are used. Use the Python course foundations if programming is new to you.

Plan about 3 to 5 hours each week. Lesson estimates include the guided practicals; project time is additional. Each lesson has a runnable example, a checked exercise, two quiz questions, and a downloadable notebook. Complete the practice and quiz to mark a lesson done.

Use Python, NumPy, SciPy, and Matplotlib in the browser, or install them in a local Jupyter environment. Project notebooks also use pandas. The first browser run downloads Python and the required packages. No MATLAB licence, paid service, or hardware is needed.

All required practical sessions use simulations in your browser. Optional physical work belongs on an approved low-voltage trainer with qualified supervision and independent protection.

Review Python foundations

Your course outline

The interactive lessons need JavaScript. The full outline and module readings are also available as plain pages.

  1. Understand feedback

    Identify the signals in a control loop and run your first feedback experiment.

  2. Build the mathematical toolkit

    Use exponentials, complex numbers, integration, and numerical error.

  3. Model physical systems

    Translate force, voltage, heat, and flow balances into dynamic models.

  4. Use transfer functions

    Work with Laplace models, block diagrams, and disturbance paths.

  5. Measure time response

    Turn rise time, overshoot, settling, and error into measurable requirements.

  6. Analyse stability

    Use pole locations and Routh tests to find stable gain ranges.

  7. Reduce steady error

    Distinguish system type, tracking error, disturbances, and integral action.

  8. Design practical PID control

    Tune PI and PID with noise, saturation, and anti-windup in mind.

  9. Design with root locus

    Follow closed-loop poles as gain changes and choose damping deliberately.

  10. Design in the frequency domain

    Read Bode plots, reason about Nyquist, and add phase lead.

  11. Sample and discretise

    Understand aliasing, sample-and-hold behaviour, and digital implementation.

  12. Implement discrete controllers

    Use difference equations and test delay, quantisation, and timing.

  13. Control with state space

    Build matrix models, test controllability, and place feedback poles.

  14. Estimate hidden states

    Test observability and build an observer for an unmeasured velocity.

  15. Optimise control and estimation

    Introduce LQR, Kalman filtering, and their model assumptions.

  16. Identify and validate a plant

    Estimate models from experiments and test them on unseen input sequences.

  17. Handle nonlinear behaviour

    Linearise around an operating point and examine where local models fail.

  18. Design for uncertainty and interaction

    Use sensitivity, uncertainty sweeps, cascade loops, and simple decoupling.

  19. Plan constrained control

    Introduce predictive control, real-time logic, and explicit fallback behaviour.

  20. Complete an engineering design

    Turn requirements, experiments, and reproducible evidence into a defensible project.

Read the full course outline

Six engineering projects