1.  Quick Links

2.  Course Overview, People, Resources

The course concerns the formulation and analysis of algorithms for continuous and discrete optimization problems; linear and nonlinear optimization; large-scale problems; software packages and their implementation; duality theory and sensitivity.

Here is a tentative course outline

Instructor: Uri Ascher, ICCS 223, ascher@cs.ubc.ca.

Teaching assistants:
Edwin Chen (edwinchenyj@gmail.com)
Yasha Pushak (ypushak@cs.ubc.ca)
Jimmy Chen (jhchen14@cs.ubc.ca)

Office hours:

  • Uri: By email appointment
  • Edwin: Tuesday 5pm to 6pm in room ICCSX141
  • Yasha: Wednesday 10am to 11am in room ICCSX139
  • Jimmy: Friday 10:30am to 11:30am in room ICCSX141


  • In principle, one of CPSC 302, CPSC 303, or MATH 307. But more importantly:
  • In practice,
    • comfortable with numerical linear algebra (eg, CPSC 302)
    • multivariate calculus
    • comfortable with Matlab

Intended audience: Advanced undergraduate students specializing in computer science, mathematics, or engineering. This course is also appropriate for graduate students.

Course material: Slides and Matlab scripts, as well as text-style course notes, will be made available as the term proceeds.

Recommended readings:

  • Griva, Nash, and Sofer, Linear and Nonlinear Optimization (2009)
  • Luenberger and Ye, Linear and nonlinear programming (2008). A free PDF is available online to UBC students, from the UBC library.
  • Boyd and Vandenberghe, Convex optimization (2004). A free PDF is available online
  • Grant and Boyd, CVX Users' Guide (2008)
  • Nocedal and Wright, Numerical Optimization (2006). A free PDF is available online.
  • Ascher and Greif, A First Course in Numerical Methods (2011). It is available online to UBC students, from the UBC library.

Homework. There will be five or six assignments throughout the term. You are encouraged to collaborate with other students in the course, but you must hand in your own assignments. Most homeworks will involve small programming tasks in Matlab.

Please review the policies on homework submission, late days and collaboration.

Grading scheme (tentative). Your grade will be determined approximately by the following scheme:

  • assignments: 40%
  • midterm exam: 20%
  • final exam: 40%

Note, however, that you are required to comply with reasonable minimal coursework requirements, and failing to do so may result in an average lower than the average computed by the above formula. Failing to hand in several of the homework assignments or to write the midterm exam without a justified reason may result in ineligibility to write the final exam, regardless of your average. The instructors reserve the right to modify the grading scheme at any time if necessary.

Midterm Exam. The midterm exam will take place in class on Thursday, October 20.

  • There is no make-up midterm exam. If you miss the midterm exam, you must set up a personal appointment with the course instructor as soon as possible, and provide a justified and documented reason for missing the exam.

3.  Additional Links and Resources

Matlab is a product of Mathworks. The best way to get started is probably with their own guides, which can be found on their website. A couple of other resources, with many additional links:

To get started with CVX

The Scientific Computing Laboratory
The Scientific Computing and Applied & Industrial Mathematics group at UBC (SCAIM).