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 lessonBefore 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 foundationsYour course outline
The interactive lessons need JavaScript. The full outline and module readings are also available as plain pages.
- Understand feedback
Identify the signals in a control loop and run your first feedback experiment.
- Build the mathematical toolkit
Use exponentials, complex numbers, integration, and numerical error.
- Model physical systems
Translate force, voltage, heat, and flow balances into dynamic models.
- Use transfer functions
Work with Laplace models, block diagrams, and disturbance paths.
- Measure time response
Turn rise time, overshoot, settling, and error into measurable requirements.
- Analyse stability
Use pole locations and Routh tests to find stable gain ranges.
- Reduce steady error
Distinguish system type, tracking error, disturbances, and integral action.
- Design practical PID control
Tune PI and PID with noise, saturation, and anti-windup in mind.
- Design with root locus
Follow closed-loop poles as gain changes and choose damping deliberately.
- Design in the frequency domain
Read Bode plots, reason about Nyquist, and add phase lead.
- Sample and discretise
Understand aliasing, sample-and-hold behaviour, and digital implementation.
- Implement discrete controllers
Use difference equations and test delay, quantisation, and timing.
- Control with state space
Build matrix models, test controllability, and place feedback poles.
- Estimate hidden states
Test observability and build an observer for an unmeasured velocity.
- Optimise control and estimation
Introduce LQR, Kalman filtering, and their model assumptions.
- Identify and validate a plant
Estimate models from experiments and test them on unseen input sequences.
- Handle nonlinear behaviour
Linearise around an operating point and examine where local models fail.
- Design for uncertainty and interaction
Use sensitivity, uncertainty sweeps, cascade loops, and simple decoupling.
- Plan constrained control
Introduce predictive control, real-time logic, and explicit fallback behaviour.
- Complete an engineering design
Turn requirements, experiments, and reproducible evidence into a defensible project.