Programming, Numerics and Optimization

Dr. Łukasz Jankowski

This is a one-semester course (30 hours) that is devoted to the basic mathematical and programming techniques which are indispensable for a researcher in engineering. Objectives The course has two specific objectives:
  1. To introduce the principles of numerical computations (conditioning, stability, etc.), as well as selected numerical techniques for linear systems, ordinary differential equations and (structural) optimization.
  2. To provide a foundation for implementing some of these techniques in any programming language (C/C++ is used within the course).
Abilities after completing the course
  1. The students will obtain a broad picture of commonly used numerical techniques for linear systems, ordinary differential equations and (structural) optimization.
  2. The students will achieve a general understanding of the internals/pitfalls of frequently used functions of mathematical/engineering software packages. As a result, they should be able to use these functions more consciously and less in a black-box manner.
  3. In their practice, the students will sooner or later encounter problems that are too large, too fine or that run too slow to be fully coded using standard mathematical software packages (Matlab, Mathematica, Scilab, etc.). The course will prepare the students for solving such problems in general-purpose programming languages.
Assessment will be based on homeworks

Lecture notes and the homeworks are available on Internet at


Contents The course consists of three parts:
  • Programming
    • Basics: types and variables, operators, control flow statements, functions, pointers, arrays, structures, lists, trees, command line arguments
    • Object-oriented programming: objects and classes, creating and destroying objects, over- loaded operators, STL vector class
  • Numerics
    • Basics: number representations, arithmetic errors, problems and algorithms, problem con- ditioning, algorithm stability
    • Numerical integration of ordinary differential equations (ODEs): basics, explicit one-step methods, implicit one-step methods, multistep methods
    • Linear systems: direct and iterative methods, least-squares problems, conditioning, regu- larization, large systems; linear integral equations
  • Optimization
    • Optimization in structural engineering, sensitivity analysis: optimization problems, objec- tive function, variables, constraints, sensitivity analysis, structural optimization
    • Unconstrained optimization: stop conditions, rate/order of convergence, line search and trust region methods, search directions and step size, 1D optimization, zero order methods, steepest descent, conjugate gradient methods, Newton methods, quasi-Newton methods, least-squares problems
    • Constrained optimization: imposing constraints, types of problems, linear programming
    • Heuristic methods: coupled local minimizers, Nelder-Mead method, simulated annealing, evolutionary algorithms, swarm intelligence, artificial neural networks