ACES: Introduction to Julia

Overview

Instructor: Jian Tao

Time: Tuesday, April 9, 2024 — 1:30PM-4:00PM CT

Location: online using Zoom

Prerequisites: Current ACCESS ID

Julia is a high-level general-purpose dynamic programming language that was originally designed to address the needs of high-performance numerical analysis and computational science, without the typical need of separate compilation to be fast, also usable for client and server web use, low-level systems programming or as a specification language. (Wikipedia.org)

Julia features optional typing, multiple dispatch, and good performance, achieved using type inference and just-in-time (JIT) compilation, implemented using LLVM. It is multi-paradigm, combining features of imperative, functional, and object-oriented programming. Julia provides ease and expressiveness for high-level numerical computing, in the same way as languages such as R, MATLAB, and Python, but also supports general programming. To achieve this, Julia builds upon the lineage of mathematical programming languages, but also borrows much from popular dynamic languages, including Lisp, Perl, Python, Lua, and Ruby. (julialang.org)

This class will provide an introduction to the Julia programming language.

Course Materials

Slides

  • Introduction to Julia (Fall 2023): PDF

Previous Material

  • Introduction to Julia (Spring 2023): PDF
  • Introduction to Julia (Fall 2021): PDF
  • Introduction to Julia (Fall 2018): PDF

Resources

Many Julia tutorials can be found at the Julia web site.

Agenda

This course focuses, among others, on the following topics:

  • Introduction to Julia
  • Run Julia programs on Linux systems
  • Program structure
  • Variable Type and Scope
  • Functions
  • Control Flow
  • Methods and Constructors
  • Streaming
  • Parallel Computing
  • Modules
  • Meta Programming
  • Julia resources on the Web
  • Hands-on session
Attendees will log into the ACES cluster from their own computers to follow along with the training meterial.