Welcome to Applied Optimization with Julia!

Mathematical Modelling and Programming

Course Description

In this module, we explore the application of optimization techniques to solve real-world problems. Over the course of the semester, you’ll learn about various optimization challenges that have been tackled by the Institute of Logistics, Transport, and Production in collaboration with industry partners.

These practical problems include optimizing the sustainability of parcel delivery companies, ensuring corona-compliant crowd management at stadiums and theaters, and designing efficient district layouts for police authorities – to name just a few examples.

The module is structured around one lecture and one exercise per week. During exercises, you’ll work in groups with fellow students to program and solve small-scale problems. Bonus points are available for these exercises, which can contribute to your final exam grade at the end of the semester.

Learning Outcomes

You can find our specific outcomes in the module handbook. Our broader goal is to introduce you to how diversified the solution of practical problems can be. We want to enable you to independently apply methods and concepts from optimization, and to get a feeling for abstracting and modeling problems.

Is our module hard? That’s a subjective question. We would say it is exciting and doable. If you have a basic interest in logical relationships and mathematics, you are in the right place. If you also have basic knowledge of programming or want to get into the subject with help, our module is perfect for you.

Upon completion of the course, you …

  • can implement solutions to complex optimization problems in Julia
  • know advanced concepts of optimization such as linear and nonlinear optimization
  • know basic concepts of programming and algorithms such as loops, functions
  • will be able to read and write code in Julia
  • will have experience working with Julia libraries such as JuMP and HiGHS
  • will know how to collaborate in a small team to find solutions for problems at hand

Please note that this course is specifically designed for business students. That is, it is not required to have any advanced knowledge or experience in programming to attend this course. The teaching format will make it possible to account for different levels of programming skills such that every student can take the most out of the course.

Course Blocks

The core content of the course is organized in three blocks:

  1. Part I: Introduction to Julia and Modelling
  2. Part II: Applied Optimization with Basic Models
  3. Part III: Applied Optimization with Advanced Models

You can find more information on the course blocks and the corresponding lectures in the syllabus.

Tutorials

The tutorials accompany the lectures. In the tutorials, you will apply the concepts from the lectures to realistic data sets. You will work in small groups of up to 3 participants, in which you can work out solutions together. We will help you during the weekly practice sessions by answering your questions or briefly explaining individual issues in case of difficulties. Afterwards, you have the opportunity to submit your jointly developed solution in Moodle until the start of the next tutorial in order to earn bonus points for the exam. Each assignment gives up to 5 points in Moodle, which is up to half a bonus point, and you can earn up to 6.0 bonus points in total. Important: the bonus points will only be credited to you if you pass the exam with at least a 4.0. Furthermore, we will not award bonus points for exercises in which you have simply copied the results of another group.

How to see the slides

  • This course is based on Quarto
  • It uses revealjs to render the slides
  • You find the slides for each lecture in the corresponding lecture
  • To see the slides, click on RevealJS in the top right side in the lecture

AI Policy

Course chatbot. A course chatbot is available on this website for exploratory study. It is an AI chatbot that knows the materials of this course; you open it with the red button at the bottom right of every page. It is designed to guide your problem-solving process rather than hand out answers: expect hints and questions back, not finished solutions. It runs on EU-hosted infrastructure (Mistral models, servers in Germany), and your conversations are not used to train models. Details are on the privacy page.

Note on the course chatbot: Conversations with the chatbot are stored without names and analysed to improve teaching and for scientific research; individual excerpts may be quoted without any reference to a person. Please do not enter personal data.

External AI tools. You may use external AI tools (e.g., ChatGPT, Claude, Mistral, Gemini). You are responsible for every line of code and every sentence you hand in: understand what the AI produced before you rely on it. Letting AI solve your tasks for you weakens exactly the skills this course exists to build, and running code you do not understand can introduce errors and security risks.

Disclosure. Every submission that used AI says so, in one honest line: what the tool was used for, in your own words (for example: “Used AI to explain the solver error and to draft the plotting code, reworked by me.”). This also applies to the bonus-point hand-ins. It is not about catching anyone out; being able to say clearly what a tool did for you is part of using it well.

Exam. In the examination itself, AI tools are not permitted.

Questions

If you have any questions regarding the course, please contact me under tobias.vlcek@uni-hamburg.de.

Contributors

Thanks to Matthes Koch and Justus Bonz, who helped to prepare the lecture materials.