Back to the syllabus

ECMJ: Introduction

Modeling & Simulation

  • Science understands reality by designing models which allow to explain and predict observations of the real world.

  • Simulation is the computation of the implications of a scientific model.

  • Computers have been invented in order to run simulations fast and reliably, thus allowing for the investigation of complex models.

In this course we'll confront the fundamental question "What is a good simulation?" and we'll progress toward an answer by introducing key theoretical ideas and by learning how to perform simulations using the Julia programming language.

About the instructor

I'm a computational scientist who started his scientific career in the theory of multi-agent systems, focusing on algorithmic and probabilistic aspects, and then went on tackling questions in computational neuroscience and artificial neural networks. Recently, as an effective altruist, I’ve become interested in Scientific Machine Learning, with the goal of contributing to a more environmentally sustainable society.

A tentative bibliography

The theory behind performing simulations is still not well organized. Here are some references that I found (but I do not endorse any specific one yet). If you have a look at any of them, let me know what you think.

First some references mostly related to programming simulations (which is, after all, our ultimate goal):

Here are some which deals mainly with the mathematical aspects (probability and statistics) of designing and performing simulations:

Here's a philosophy book on the topic:

Finally another book which takes a general perspective and that I didn't feel like listing in previous groups:

Of course there are many more, but these are the one that caught my attention. Feel free to propose other books that you think deserve to be in the list more than some of those already listed.

Where to take it from here

This mini-course aims at making you curious about the topic of scientific computing and, more generally, the use of the Julia language for your research.

If you want to learn more, check out these courses:

The Julia Programming Language

Julia is a modern language for scientific computing that strive to be as easy as Python and as fast as C. Installing it is as easy as downloading a file and executing it, and there are tons of (friendly!) resources for learning and using it:

The VSCode IDE

The officially supported IDE for Julia is VSCode.

The first tip about using it is use the command palette!

After installing it, get the julia-vscode extension. Besides all the usual IDE features, you can easily interact with an embedded Julia REPL:

# open the `.jmd` file of this notebook and press `alt+Enter` with the cursor inside this cell  
π^2
9.869604401089358

Advertisement. Besides programming in Julia, VSCode is a great editor, e.g. for writing LaTeX. It also easily allow pair programming (e.g. editing like in Google Docs or Overleaf), and to easily work on a remote machine.