{"id":16700327,"url":"https://github.com/sefffal/aasjuliaworkshop","last_synced_at":"2026-01-02T13:11:17.664Z","repository":{"id":91470706,"uuid":"576418440","full_name":"sefffal/AASJuliaWorkshop","owner":"sefffal","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-07T05:07:54.000Z","size":547,"stargazers_count":23,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-21T00:32:37.202Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sefffal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-09T20:09:14.000Z","updated_at":"2023-06-06T17:25:21.000Z","dependencies_parsed_at":"2023-07-17T03:30:22.946Z","dependency_job_id":null,"html_url":"https://github.com/sefffal/AASJuliaWorkshop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sefffal%2FAASJuliaWorkshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sefffal%2FAASJuliaWorkshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sefffal%2FAASJuliaWorkshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sefffal%2FAASJuliaWorkshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sefffal","download_url":"https://codeload.github.com/sefffal/AASJuliaWorkshop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243528791,"owners_count":20305490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T18:10:16.206Z","updated_at":"2026-01-02T13:11:17.636Z","avatar_url":"https://github.com/sefffal.png","language":"Julia","readme":"# AAS Julia Workshop\n\n[**Jump to setup instructions**](#setup)\n\n[**Jump to workshop contents**](#workshop-contents)\n\nThis repository contains material for the AAS 241 workshop \"An Introduction to the Julia Programming Language\"\n\nDate: **Saturday, 7 January, 9:00 am - 5:00 pm (In-person)**\n\nNote: Registration for this in-person event has already closed.\n\n\nThe Julia programming language can be considered the successor to Scientific Python (SciPy). The language is designed for scientific computing by having built-in multidimensional arrays and parallel processing features. Yet, it can also be used as a general-purpose programming language like Python. Unlike Python, Julia solves the two-language problem by using just-in-time (JIT) compilation to generate machine code from high level expressions. In most cases, Julia is as fast as C, and in some cases faster. Julia is also a composable language, so independent libraries or packages usually work well together without any modification. These important features make Julia a very productive language for scientific software development by reducing the number of lines of code.\n\nThe objectives of this tutorial are: (1) to introduce astronomers and software developers to the basic language syntax, features, and power of the Julia programming language, (2) to compare and contrast Julia’s design features to those of C/C++ and Python, and (3) to show that Julia provides an easy migration path from languages such as C/C++, FORTRAN, and Python. In other words, it is not necessary to rewrite all of your code all at once.\n\nThe tutorial will begin with simple interactive command-line (REPL) examples that emphasize important concepts and features of the language; namely, unicode characters, multidimensional arrays, data types or structures, functions, multiple dispatch, and namespaces. It will then combine these basic concepts to demonstrate some important features of the language; namely, composability, the two-language problem and benchmarking, the standard library, plotting, interfacing to other languages, symbolic manipulation, package management, and parallel processing and GPUs. \n\n\n## Setup\n\nWe will be using Julia and Pluto notebooks. Please follow these installation instructions before the start of the workshop. If you run into to difficulties, please feel free to contact the organizers or let us know at the start of the workshop.\n\nNote: Pluto notebooks are not compatible with Jupyter.\n\n### Installing Julia\nPlease [install the latest stable version of Julia](https://julialang.org/downloads/) (1.8.4 as of December, 2022) on you computer. Make sure to use the links on the official Julia website linked above, rather than any 3rd party package manager (e.g. homebrew, apt, nuget, etc.).\n\nFor more advanced users, [JuliaUp](https://github.com/JuliaLang/juliaup) can be used to install, update, and switch between versions of Julia. \n\n\u003cdetails\u003e\n\u003csummary\u003eMacOS Instructions\u003c/summary\u003e\nIf you have a new mac with an M1 processor, make sure to select the \"M-series Processor\" link for improved performance.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows Instructions\u003c/summary\u003e\nThis \u003ca href=\"https://www.microsoft.com/store/apps/9NJNWW8PVKMN\"\u003eMicrosoft Store\u003c/a\u003e link can also be used to install JuliaUp.\n\nWe strongly recomend you use the Windows Terminal included in Windows 11 or downloadable from this \u003ca href=\"https://aka.ms/terminal\"\u003eMicrosoft Store link\u003c/a\u003e. Windows Terminal has improved font and math symbol rendering compared to the antiquated `cmd.exe`.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eLinux Instructions\u003c/summary\u003e\nAfter downloading the correct version of Julia for your operating system, expand the archive (e.g. \u003ccode\u003etar -xvf julia-xyz.tar.gz\u003c/code\u003e) and place the binary \u003ccode\u003ejulia-xyz/bin/julia\u003c/code\u003e in your \u003ccode\u003ePATH\u003c/code\u003e.\n\nThe versions of Julia included in OS package managers (yum, apt, pacman, etc) frequently have bugs not seen in the offical binaries and should be avoided. For more information, \u003ca href=\"https://julialang.org/downloads/platform/#a_brief_note_about_unofficial_binaries\"\u003esee here\u003c/a\u003e.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDocker\u003c/summary\u003e\nJulia runs in lightweight, self-contained environments. It is therefore not usually necessary to install Julia within Docker for the sake of reproducibility.\n\u003c/details\u003e\n\nOnce you have installed Julia, run the following command in your terminal to install Pluto:\n```bash\njulia -e 'using Pkg; Pkg.add(\"Pluto\")'\n```\n\nSet the desired number of threads Julia should run with using an environment variable:\n\n**Windows:**\n```cmd\nSET JULIA_NUM_THREADS=auto\n```\n**Mac \u0026 Linux:**\n```bash\nexport JULIA_NUM_THREADS=auto\n```\n\n\nThen, in the same terminal, start Julia by running:\n```bash\njulia\n```\n\nTo start Pluto, run the following from inside Julia:\n```julia-repl\njulia\u003e using Pluto\njulia\u003e Pluto.run()\n```\n\n### Note on Python\nIn one section, we will demonstrate how you can use Python libraries inside Julia. You do not have to have a Python installed in advance.\n\n## Workshop Contents\n\nThe material for each section is stored as a [Pluto notebook](https://plutojl.org/). \n\nCopy the link for a given section below and paste it into the \"Open a Notebook\" box in Pluto.\n\nThe morning content is a single notebook, while the afternoon is split into multiple topics.\n\n| Topic | Link | \n|-------|------|\n| 1. Introducing Julia | https://github.com/sefffal/AASJuliaWorkshop/raw/main/1-intro-to-julia.jl |\n| 2. Calling Python | https://github.com/sefffal/AASJuliaWorkshop/raw/main/2-calling-python.jl |\n| 3. Using Macros | http://github.com/sefffal/AASJuliaWorkshop/raw/main/3-using-macros.jl |\n| 4. Astronomy Packages | https://github.com/sefffal/AASJuliaWorkshop/raw/main/4-astro-packages.jl |\n| 5. Optimizing Code | https://github.com/sefffal/AASJuliaWorkshop/raw/main/5-optimization.jl |\n| 6. Parallel Computing | https://github.com/sefffal/AASJuliaWorkshop/raw/main/6-parallel_computing.jl |\n| 7. Creating Packages | https://github.com/sefffal/AASJuliaWorkshop/raw/main/7-creating-packages.jl | \n| 8. Questions and Special Topics | |\n\n\n\u003c!--\nmy sections:\nGetting started (add a little about making sure eveyrone is installed)\nelementary functions\nmathematical operations\nmulti dimensional arrays\nparallel computing\n\npaul does the rest. Feel free to make changes to my subsections.\n\nAfternoon:\npycall (PB)\nmacros (PB)\nastronomy packages (WT)\noptimization (PB)\nparallel computing (WT)\ncreating packages (WT)\nquestions special topics\n\n\nput creating packages second to last\n\nI will volunteer to put this all in the readme in a nice format\n\nAlso put multiple dispatch into making your own package section\nAnd overloading base functions example.\nWarning about type piracy\n\n\n1. ...\n2. ...\n3. Astronomy packages in Julia `https://github.com/sefffal/AASJuliaWorkshop/raw/main/3-astro-packages.jl`\n\n\n\n-----\nThis repository contains material prepared for the AAS 241 meeting workshop titled \"introduction to Julia\".\n\n\n* Basic Concepts\n    * Plotting\n    * Multiple dispatch (Julia) vs single dispatch (Python)\n* Advanced topics\n  * PyCall \u0026 PythonCall - PB\n  * Using Macros - PB\n  * Optimization: types, dot notation - PT\n  * Creating a package w/function generation - WT\n  * Parallel Computing: vectorization, threads, distributed, GPU - PT\n  * Astronomy packages - WT\n  * Questions/special topics\n--\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsefffal%2Faasjuliaworkshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsefffal%2Faasjuliaworkshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsefffal%2Faasjuliaworkshop/lists"}