Introduction to Julia

October 25, 2016

9:00am - 5:00pm

DBH 4011

Instructor: Chris Rackauckas

Introduction

Julia is a relatively new language which has been making waves in the scientific community due to its ease of use as a scripting language combined with its ability to produce programs with comparable runtimes to C/Fortran. For this reason, Julia is situated is fast becoming a major language in high-performance and “big data” computing. However, the current state of the Julia ecosystem can be intimidating to much of its target audience, which is both high-level scriptors (using MATLAB/Python/R) all the way to developers of high-performance libraries (using C/Fortran). This workshop is aims to introduce both users of scripting languages and advanced programmers to the Julia ecosystem, and explore details about the Julia language which can help produce efficient and readable code. The goal of the workshop is for students to understand where Julia can be applied and be well-equipped to start using Julia in their own research. Students will learn about the current state of Julia development (IDEs, documentation, where to get help), how to write efficient code by understanding some of Julia’s internals via small projects, solve problems using advanced Julia features (metaprogramming, multiple-dispatch, etc.), and learn workarounds to common issues newcomers face (scoping problems, type conversions, etc.). Near the end of the workshop, participants will break out into groups to solve problems which mirror research problems in data science and scientific computing.

Who: Reserchers who understand the fundamentals of some other scripting language and want to learn how to utilize Julia. You don’t need to have any previous knowledge of the tools that will be presented at the workshop.

Requirements: Participants must bring a laptop. Ideally a few specific software packages should be installed beforehand (see Pre-Workshop Instructions).

Prerequisites: Previous experience with a scripting language (R/Python/MATLAB etc.).

Contact: Please mail crackauc@uci.edu for more information.


Tentative Schedule

Time  
8:00-9:00 Installation Help Session
9:00-11:00 Basic Introduction to Julia
11:00-12:00 Why Julia? An In-depth Intro Into How Julia Gets Its Speed
12:00-1:00 Lunch break
1:00-3:00 Exploring Julia’s Packages
3:00-5:00 Guided Group Projects

Syllabus

  • Basic Introduction
    • Why Julia? When to choose Julia?
    • Installing/Building Julia, Setting up an IDE
    • Package Management and Github
    • Basic usage: control statements, types, and functions
    • Where to get help: documentation, message boards, etc.
    • Data visualization & Statistical Analysis
  • Fundamentals of Julia
    • Differences from other common languages
    • Linear algebra
    • Data-oriented programming
    • Macro meta-programming
    • Levels of parallelization
    • De-vectorization, SIMD, threading
    • Named functions
    • Subscoping
    • LLVM
  • Guided Projects
    • Mathematical Modeling
    • Data Visualization
    • Multi-node HPC (“Julia’s MPI”)
    • Investigating LLVM
    • Modules and Package Development
    • Langugage Bindings
    • Data Saving and Serialization

Pre-Workshop Instructions

Installing Julia beforehand is not required, though highly recommended. Attendees may wish to install the Julia/Atom IDE before the workshop. Instructions for doing so are provided at: http://ucidatascienceinitiative.github.io/IntroToJulia/Html/ToolingDocumentationCommunity. Help for doing so can be found at the UCI JuliaLang Gitter https://gitter.im/JuliaLang/julia and the JunoLab Gitter https://gitter.im/JunoLab/Juno. Before the workshop we will have a one-hour installation session for users who are having issues.

Github Repository

Registration