alt text 

Introduction to Optimization for Engineers – ELEC 400O | MECH 410Q | MECH 540G

Winter Term, 2026–27. Instructors: Alberto Padoan and Dominic Liao-McPherson.
Links: Website | Piazza | Canvas 400O, Canvas 41OQ, Canvas 540G.

Lectures

Time: Every Tuesday and Thursday, 11:00 – 12:30.
Room: UBCV | Gateway Health Building (GWHB) | Floor 4 | Room 4290

Tutorials

Time: Every Wednesday, 15:00 – 16:00.
Room: UBCV | Civil and Mechanical Engineering Building (CEME) | Floor: 1 | Room: 1212

Office Hours

Primarily via Piazza. Alternatively, after lectures by appointment via written email.

Credits

Units: 4 (ELEC 400O, MECH 410Q, MECH 540G). Letter grade.

Course Description

This course is an introduction to optimization for engineers, with an emphasis on algorithms: how they are derived, why they converge, and how they behave on real problems. Topics include:

  • Mathematical background: linear algebra, conditioning, and multivariable calculus

  • Formulating and reformulating engineering problems as optimization problems

  • Optimality conditions (unconstrained and constrained), duality, and sensitivity

  • Algorithms: gradient descent, line search, Newton and damped Newton, projected gradient, interior-point methods, and sequential quadratic programming

Learning Objectives

Students completing this course should be able to:

  • Recognise the class an optimization problem belongs to, and turn an engineering problem into mathematical optimization problem

  • State the optimality conditions appropriate to a problem, and use them to certify or reject a candidate solution

  • Derive the main algorithms of the course and explain the assumptions each one needs

  • Implement basic optimization algorithms, and diagnose their failure modes

  • Explain how conditioning and numerical errors affect the behaviour of an optimization algorithm

  • Use an off-the-shelf solver competently and interpret what it reports

Course Schedule (tentative)

  • Week 1: Introduction

  • Week 2-3: Mathematical foundations

  • Week 4: Optimization problems: overview and modelling

  • Week 5-7: Unconstrained optimization: theory and algorithms

  • Week 8-12: Constrained optimization: theory and algorithms

  • Week 12-13: Bonus topics / Final project presentations

No classes: 30 September (National Day for Truth and Reconciliation), and 10-11 November (midterm break and Remembrance Day). 15-18 September (instructor away), and possibly 9-16 October (instructor possibly away).

Midterms

  • Midterm 1 – Thursday, 22 October 2026 (tentative), in person (during regular class hours).

  • Midterm 2 – Thursday, 26 November 2026 (tentative), in person (during regular class hours).

Project Presentations

Project presentations are tentatively scheduled for 18 and 25 November and 2 December, during the regular Wednesday tutorial hour.

Material & References

All lecture materials — slides, annotated slides, exercises, and notebooks — are available in this online folder. New materials are added before each lecture or shortly afterwards.

  • J. Nocedal and S. J. Wright, Numerical Optimization. 2nd ed., Springer, 2006.

  • S. Boyd and L. Vandenberghe, Convex Optimization. Cambridge University Press, 2004. (optional)

  • D. P. Bertsekas, Nonlinear Programming. 3rd ed., Athena Scientific, 2016. (optional)

See also the Resources page.

Prerequisites

  • Linear algebra and multivariable calculus at the level of a second-year engineering course.

  • Familiarity with programming (needed for both tutorials and final project).

  • No prior exposure to optimization is assumed.

Assessment

ELEC 400-O and MECH 410-Q

  • 35% – Midterm 1

  • 35% – Midterm 2

  • 30% – Final project

MECH 540-G

  • 30% – Midterm 1

  • 30% – Midterm 2

  • 30% – Final project

  • 10% – Research presentation (last 2 weeks of lectures)

Note: Use of generative AI is permitted as a tool. However, all submitted work must reflect the student’s own understanding. Work primarily generated by AI will receive a grade of zero.

Final Project

A short research-style report and a runnable Python notebook, taking one method from the course further than the lectures do. Main idea: identify a problem for which standard formulations or off-the-shelf algorithms fall short, develop a formulation or algorithm based on material from the course, and demonstrate its effectiveness through numerical experiments, theoretical analysis, or both. Groups of two are preferred.

Benchmark problems may be suggested by the instructors, but original topics are especially welcome.

Timeline

  • Topic proposal – 20 October, one paragraph

  • Project talks – From 18 November, during the tutorial hour

  • Report and notebook – due 4 December, 16:00

Full details, including the report and presentation rubrics and the academic concession policy, are in the Grading Policy.

Late policy

Deadlines are firm — late work or missed assessments will not be graded, consistent with the Academic Calendar on Grading Practices. If illness or compassionate grounds prevent you from sitting a midterm or meeting the project deadline, contact the instructor in writing as early as possible; requests are handled under the UBC policy on academic concession.

Disclaimers

Lectures and course materials, including presentations, tests, outlines, and similar materials, are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

This is not an official course webpage from UBC, and it is maintained personally by the instructors. This being the inaugural run, please anticipate occasional hiccups. Thank you for your flexibility as we refine the experience.

Feedback

If you have suggestions or found the material useful, we would be happy to hear from you. Please use:
alberto [DOT] padoan [@] ubc [DOT] ca
dliaomcp [@] mech [DOT] ubc [DOT] ca