What this workshop is about

Hello and welcome to our Julia workshop!

Together, we'll be exploring the amazing world of Julia, a powerful programming language that's taking the world of scientific computing, data science, and research by storm.

Julia is not only known for its ease of use, but also its incredible speed and flexibility. These qualities make it an excellent choice for developers, data scientists, and researchers alike. Let's dive into some of the key reasons why Julia is so awesome:

  1. Superior performance: Julia is fast – very fast. It eliminates the need to use C/C++, Fortran, or other "slow-productivity" or "slow-prototyping" languages, effectively solving the "two-language problem." This means you can focus on one language for both development and performance optimization.
  2. User-friendly syntax: Julia boasts a simple and intuitive syntax that makes it easy for beginners to pick up and for experts to master.
  3. Advanced support for Unicode and $\LaTeX$ characters: Julia makes it simple to incorporate Unicode and $\LaTeX$ characters into your code. Say goodbye to "alpha" and "beta" and embrace the elegance of α and β.
  4. Rapid prototyping: With Julia, it's easy to add and prototype new algorithms right from the start, allowing you to quickly create efficient, high-performance solutions.

How to get started

As this is an asynchronous workshop, you might be reading this before, during, or after the workshop. Regardless of when you're engaging with the material, we hope you'll find this workshop useful and informative.

To ensure a smooth learning experience, we have divided the workshop into three main stages: pre-workshop preparation, hands-on activities during the workshop, and post-workshop exploration.

Pre-workshop preparation

It is important that you install Julia and Visual Studio Code following the steps outlined in Preparation.

During the workshop

We will focus on what sets Julia apart from other programming languages working hands-on with Julia in Visual Studio Code (VSCode). Through hands-on activities, you'll gain practical experience to reinforce your understanding of the concepts.

The core of this workshop consists of 5 chapters (Chapter 0 - Chapter 4) that you can see in the sidebar on the left. They are meant to be completed in your own pace but in this order (0-4).

Chapter 0 should be completed before the workshop begins, because we will guide you through the installation of Julia and Visual Studio Code. In case you run into any issues, please contact us to help you troubleshoot.

Chapter 1 is the first chapter that we tackle together. Before diving into the intricacies of Julia, we will first discuss the workflow and tools you'll need to get started with the language. This will help you familiarize yourself with the environment, become proficient in using Julia, and empower you to troubleshoot any issues you may encounter.

Chapter 2 is meant to bridge the gap between Julia and the programming languages you are already familiar with. We will guide you through translating key concepts — such as assignment, control flow, and functions — from other languages into Julia.

Chapter 3 is about exploring Julia's Type System, because everything that exists in Julia has a type. To truly understand Julia, you must understand types, and what better way to understand than to create your own type?

Chapter 4 is about functions and their interplay with types, because everything that happens in Julia, happens because of functions acting on types. The way Julia implements this interplay is what makes Julia so powerful, and sets it apart from other languages. This chapter will help you understand this feature — called "multiple dispatch" — and how to leverage it to do amazing things.

Post workshop exploration

After the workshop, we encourage you to continue experimenting with Julia, apply the skills you've learned to real-world projects, and leverage the resources and community support available to further your knowledge. To start you on this journey we have prepared the Additional Materials section. By thoughtfully engaging with the workshop content and activities, you'll be well-prepared to harness the full potential of Julia and excel in your projects.

Who we are

  • Maximilian Ernst is a PhD Student at the Max Planck School of Cognition.
  • Moritz Ketzer is a PhD student at the International Max Planck Research School on Computational Methods in Psychiatry and Ageing Research.
  • Hannes Diemerling is a PhD Studen at the International Max Planck Research School on the Life Course (LIFE).
  • Aaron Peikert is principle investigator of the Formal Methods group at the Max Planck Institute for Human Development.