Topic outline

  • Why this course?

    Mathematical optimisation is one of the cornerstones of fields such as Machine Learning, Artificial Intelligence, and Operations Research. Most decision support methods have, at some level, a mathematical optimisation method at its core, and it is precisely these methods that we will learn in this course.

    Mathematical optimisation (Nonlinear optimisation, in its most general form) is a powerful framework in which one seeks to find variable values within a domain that maximise (or minimise) the value of a given function. Using the analogy that variables represent decisions or parameters to be defined and the function is a measure of performance, one can use that framework to support decision making in a wide range of applications, from planning industrial chemical plants to training models that learn from data. 

    In this course, the student will learn the basic optimisation theory behind the main numerical algorithms available and how they can be applied to solve optimisation problems. At the end of the course, it is expected that the student will be capable of analysing the main characteristics of an optimisation problem and decide what is the most suitable method to be employed for its solution.  

    Practical matters

    Lecturer: Fabricio Oliveira
    Assistants: Nikita Belyak 

    • Teaching: Online lectures (24h) and exercise sessions (24h)

        - Zoom link for lectures
         Meeting ID: 639 4958 4993
         Passcode: 941497

        - Zulip invite for student sessions:
         Information about how to use Zulip:


  • Not available unless:
    • Your User account contains (use: contains
    • It is before 31 December 2021, 11:55 PM
  • Not available unless:
    • Your User account contains (use: contains
    • It is before 31 December 2021, 11:55 PM
  • Not available unless:
    • Your User account contains (use: contains
    • It is before 31 January 2022, 11:55 PM
  • Many of the assignments in our course will be implemented in Julia, using packages, such as JuMP, Plots, among many others. Julia combines simplicity and remarkable performance, which is one of the reasons it has become the language of choice for many optimisation applications. The main website for downloading is This is also the main place for finding the information you might need. 

    Aalto Scientific Computing offers an introductory course in Julia. I strongly recommend you to take this short course if you are new to Julia. Here is the link to register:

    There are a few options to use Julia during this course.

    1. The first option which is probably the easiest and recommended one is to use Aalto JupyterHub with the Julia 1.6.2 kernel. The platform may be accessed from here https://jupyter.cs.aalto.fiFollowing this link, you will be able to log to with your personal Aalto account and choose the Julia environment (Julia: General use (JupyterLab)) on the next page. In this case, all the necessary packages are preinstalled. 
    2. The second option is to install Julia on your personal computer. We recommend this option for those that feel confident about handling the installation themselves. In this case, the recommended version of Julia 1.6.2 with the most recent versions of the packages. By following this option, you will also have to manually install all the packages that will be required during the course.

    For the coding interface (IDE), I recommend using Jupyter notebooks (you can open them in Julia by using the IJulia package). If you would like something more "advanced" then VS Code is the way to go.

    Below you can find some helpful links. The first one has all the information you need for this course.