Skip to content
Denis F. Cioffi, Ph.D. edited this page Oct 28, 2025 · 82 revisions

Welcome to the AAS247Julia wiki, created 16 September 2025.

Members

  1. Paul Barrett
  2. Erandi Chavez
  3. Abhro Rahman
  4. Denis Cioffi

Outline

N.B. Session lectures should be about 15 minutes, with the rest of the time for the students to work.


Day 1

1. Introduction

  • Contextual history of Python and Julia
  • Installation, if necessary
  • Workshop outline
  • Package management
    • environments and their relationship to projects (Day 2; show Day 2 outline, too.)
    • quick note of DrWatson.jl package
  • A Julia sampler
    • Measurements example and problems
    • Unitful example and problems
    • Symbol example and problems
    • GPU example and problem
  • 7+ problems (~5 minutes each)

2. Arrays 1

  • Multidimensional Arrays

    • Mathematics protocol, i.e., column major & 1 indexing
    • Array creation, i.e., ',' & ';' syntax
    • Array broadcasting, i.e., dot (.) operator
    • Array fusion (A.*B .+ C), i.e., implied for loop
    • Matrix multiplication (* operator)
  • 7+ problems (~5 minutes each)

3. Arrays 2

  • Array and tuple comprehensions, i.e., [... for ...], (... for ...)

  • Array comprehensions with "if statement"

  • Array slicing & indexing, i.e., [1:end,2]

  • Array slicing with boolean array

  • Cartesian Index (?)

  • 7+ problems (~5 minutes each)

==========================================

  • Using Arrays with examples loading data examples
  • loading data from a CSV file
  • loading data from a text file
  • Power of Julia with Arrays: Broadcasting and Fusion
  • broadcasting as an implied for loop
  • operations fused - huge benefit for performance
  • show some benchmarks to emphasize optimization
  • conciseness
  • indexing and slicing
  • don't need the NumPy overhead
  • Quality of life improvements
    • General interactions with arrays, and the benefits that comes from it being built-in to the language
  • list & array comprehension
  • Difference between element-by-element multiplication (.*) and matrix multiplication(*)
  • tuples have less allocation: faster (can show benchmarks as exercise?) Let them play around with arrays while emphasizing the above points!
  • Broadcasting with functions leads into function section, below.

4. Functions

  • introduce concept of multiple dispatch

  • contrast to python: Julia looks at all arguments

  • 7+ problems (~5 minutes each)

5. Types

  • deepen understanding of multiple dispatch

  • multiple dispatch can also use types to do multiple dispatch

  • 7+ problems (~5 minutes each)

6. Does a brief discussion of AI go here? Point should be made that AI doesn't know Julia well, and so its specific commands will often be incorrect, but it can still give good ideas on how to proceed.

  • Perhaps come with a packaged example.

  • 7+ problems (~5 minutes each)

Day 2

7. Transitioning to Julia

  • how does one translate code from one language to the next
  • have students do group coding to translate code from Python to Julia, compare+contrast+discuss between all groups at the end

Symbolics? Where?

7. Astronomy Packages: Intro to JuliaAstro

8. PythonCall (and JuliaCall; mention PyCall as an earlier attempt no longer in vogue)

Parallel Processing (including GPUs)

Using Macros

Creating Packages

Optimizing Code

What references should we list? recommend?

Textual

Video

Specific Julia Sites of Interest

Clone this wiki locally