Topic outline

  • Why take this course in NonLinear Optimization?

    Mathematical optimization 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 optimization method at its core, and it is precisely these methods that we will learn in this course.

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

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

    Learning Outcomes

    Upon completing this course, the student should be able to:

    • understand how several important problems arising from diverse fields can be cast and solved as nonlinear optimisation problems;
    • familiarise themselves with classical non-linear problems;
    • know the main techniques for modelling and solving nonlinear optimisation problems and how to apply them in practice;
    • know how to use optimisation software for implementing and solving nonlinear optimisation problems.

    Additional Materials

    Lecture notes, lecture slides and exercises.

    BookNonlinear Programming, Theory and Algorithms by Bazaraa, Sherali and Shetty.


    The course is graded on a scale of 0-5 based on 4 homework assignments (50 %) and 2 projects (25% each). 

    Course Staff:

    Lecturer:  Fernando Dias (

    Assistant: Topias Terho (

    Reception hour:
    Lecturer:  Wednesdays at 12:00 - 13:00 in room Y214 (Otakaari 1). Please confirm the appointment by contacting via email first.  

    Zulip chat invitation link:

  • Using Julia

    In our course, we will refer to several examples implemented in Julia, using packages such as JuMP, Plots, among many others. Julia is a modern language that combines simplicity and remarkable performance. The main website for downloading the language is This is also the main place for finding the information you might need. 

    There are a few options to use Julia during this course (with no order of preference!).

    1. The first option is to use Aalto JupyterHub with Julia. The platform can be accessed from Following this link, you will be able to log on with your personal Aalto account credentials and choose the Julia environment (Julia: General use (JupyterLab)) on the next page. In this case, all the necessary packages are preinstalled. This is a better option if you are not familiar with installing/ utilising open-source programming languages.   
    2. The second option is to install Julia on your personal device. The recommended version of Julia is 1.7.0 (or superior) with the most recent packages. You can find instructions on how to install it at This is a better option if you are familiar with installing/ utilising an open-source programming language (such as Python). We use Jupyter notebooks for exercises, and you will need to start by installing the IJulia package after you have installed Julia. For instructions on how to use the Julia package manager, see the documentation. After that, you will need to install the packages you need. 


    We will show the basics of installing and using packages in the exercise session, but you will need to learn by yourself how to use the language for the purposes of the course. Below you can find some helpful links for self-studying. Please let us know if you find others worth including.

    • Aalto Scientific Computing Julia course (check for ongoing editions):
    • Julia Intro Tutorial (YouTube):

  • Weekly Exercise Sessions Information:

    • When: Thursdays, 16:15 - 18:00
    • Where: Lecture Hall E

    In these sessions, a set of exercise questions is solved either individually or in groups. These exercises encompass a mix of computational and theoretical questions designed to familiarize students with the Julia programming language and the content covered in the lectures. The TA will be available to offer assistance and tips on how to solve these exercises. Model solutions will be presented at the end of each session and will also be made available on MyCourses for self-study. Participation is voluntary, and no points will be awarded. Additionally, students may seek advice on homework and project assignments.