ACES: Introduction to Julia

Overview

Instructor: Wes Brashear

Time: Tuesday, October 29, 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.

Registration will open up on this webpage the week before the class.

Course Materials

Slides

  • Introduction to Julia (Fall 2024): PDF

Previous Material

  • Introduction to Julia (Spring 2024): PDF
  • Introduction to Julia (Fall 2023): PDF
  • Introduction to Julia (Spring 2023): PDF

Resources

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

Learning Objectives and Agenda

In this course, participants will:

  • Learn the basic code elements of Julia
  • Log in to ACES and access the Julia software
  • Learn how to use Julia's interactive REPL environment
  • Learn Julia's arithmetic and conditional operators
  • Learn data types in Julia
  • Learn how to work with string/character data in Julia
  • Learn data structures types in Julia, including arrays, matrices, sets, and dictionaries
  • Learn the basic syntax for defining functions in Julia

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 material and complete exercises.