Ciência de Dados e Computação Científica com Julia
Bem-vindo à Disciplina de Computação Científica com Julia do Mestrado e Doutorado em Informática e Gestão do Conhecimento (PPGI) da UNINOVE
A disciplina toda foi gravada e disponibilizada no YouTube na playlist abaixo:
Esta disciplina foi inspirada na disciplina do MIT "Computational Thinking, a live online Julia/Pluto textbook, https://computationalthinking.mit.edu".
Julia é uma linguagem rápida de tipagem dinâmica que compila just-in-time (JIT) em código nativo binário usando LLVM. Ela "roda como C mas escreve como Python", isto quer dizer que é extremamente rápida, de fácil prototipagem e leitura/escrita de código. Além disso, ela é multi-paradigma combinando as características de programação imperativa, funcional, e orientada a objetos.
Pré-requisito(s): lógica de programação e simples conceitos teóricos sobre dados tabulares, grafos e redes, otimização matemática, machine learning, estatística Bayesiana e redes neurais.
- Documentação de Julia: A documentação de Julia é um recurso muito amigável e bem escrito que explica o design básico e a funcionalidade da linguagem.
- Thinking Julia (Lauwens e Downey, 2019): livro introdutório para iniciantes que explica os principais conceitos e funcionalidades por trás da linguagem Julia . Disponível gratuitamente online.
- Julia High Performance (Sengupta e Edelman, 2019): livro de dois dos criadores da linguagem Julia (Avik Sengupta e Alan Edelman), aborda como tornar Julia ainda mais rápida com alguns princípios e truques computacionais.
- A programming language to heal the planet together: Julia (TEDx Talks, 2020): um vídeo no YouTube do Alan Edelman sobre as lacunas que Julia pretende preencher no mundo da computação científica.
- The Unreasonable Effectiveness of Multiple Dispatch. (The Julia Programming Language, 2019): um vídeo no YouTube de um dos criadores da linguagem Julia, Stefan Karpinski, sobre um dos principais diferenciais da linguagem, Despacho Múltiplo (Multiple Dispatch).
- Notebooks Pluto: o conteúdo da disciplina é todo feito com Notebooks Pluto que são ambientes reativos e dinâmicos de fácil demonstração e exploração de código Julia.
- Julia Programming for Nervous Beginners (Laurie, 2021): um curso de 4 semanas da JuliaAcademy que ensina desde o zero de computação até o básico da linguagem Julia.
- Julia Data Science (Storopoli, Huijzer & Alonso, 2021): livro opensource e gratuito sobre
Julia
. Ainda em elaboração, será um conteúdo bilíngue Português-Inglês.
Ao completar essa disciplina, alunos estarão aptos à:
- programar em Julia
- programar algoritmos em Julia
- fazer benchmark correto de código Julia com
BenchmarkTools.jl
- utilizar estrutura de dados de Julia
- executar operações em paralelo na CPU usando
Threads.jl
,ThreadsX.jl
eSIMD
comLoopVectorization.jl
- manipular dados tabulares com
DataFrames.jl
- plotar dados com
Plots.jl
,StatsPlots.jl
eAlgebraOfGraphics.jl
- criar, manipular e analisar grafos e redes com
Graphs.jl
- especificar, modelar e otimizar matematicamente problemas complexos com
JuMP.jl
- treinar algoritmos de machine learning com
MLJ.jl
- especificar modelos probabilísticos Bayesianos e executar amostradores Markov Chain Monte Carlo (MCMC) com
Turing.jl
- criar e treinar redes neurais usando
Flux.jl
- Linguagem Julia e Estrutura de Dados Nativas (Bezanson et al., 2017; Perkel, 2019)
- Algoritmos e Benchmarks com
BenchmarkTools.jl
(Chen & Revels, 2016) - Performance e Operações Paralelas
- Dados Tabulares com
DataFrames.jl
(White et al., 2020; Storopoli, Huijzer & Alonso, 2021) - Séries Temporais
DataFrames.jl
(White et al., 2020; Storopoli, Huijzer & Alonso, 2021) - Visualização de Dados com
Plots.jl
,StatsPlots.jl
eAlgebraOfGraphics.jl
(Breloff et al., 2021; Storopoli, Huijzer & Alonso, 2021) - Grafos e Análise Redes com
Graphs.jl
(Bromberger & Contributors, 2017) - Modelagem e Otimizações Matemáticas com
JuMP.jl
(Dunning et al., 2017) - Modelos Probabilísticos Bayesianos com
Turing.jl
(Ge et al., 2018; Xu et al., 2020; Storopoli, 2021) - Machine Learning com
MLJ.jl
(Blaom et al., 2020) - Deep Learning com
Flux.jl
(Innes et al., 2018; Innes, 2018)
Jose Storopoli, PhD - Lattes CV - ORCID - https://storopoli.io
Este conteúdo possui licença livre para uso (CC BY-SA). Você é mais do que bem-vindo para contribuir com issues e pull requests.
Para configurar um ambiente local:
- Baixe e instale Julia
- Clone o repositório do GitHub:
git clone https://github.com/storopoli/Computacao-Cientifica.git
- Acesse o diretório:
Computacao-Cientifica
- Abra os Notebooks Pluto no terminal de Julia:
using Pkg Pkg.add("Pluto") using Pluto Pluto.run()
Para citar o conteúdo use:
Storopoli (2021). Ciência de Dados e Computação Científica com Julia. https://storopoli.github.io/Computacao-Cientifica.
Ou em formato BibTeX (LaTeX):
@misc{storopoli2021computacaocientificajulia,
author = {Storopoli, Jose},
title = {Ciência de Dados e Computação Científica com Julia},
url = {https://storopoli.github.io/Computacao-Cientifica},
year = {2021}
}
-
Bezanson, J., Edelman, A., Karpinski, S. & Shah, V. B. (2017). Julia: A Fresh Approach to Numerical Computing. SIAM review, 59(1), 65–98.
-
Blaom, A. D., Kiraly, F., Lienart, T., Simillides, Y., Arenas, D. & Vollmer, S. J. (2020). MLJ: A Julia Package for Composable Machine Learning. Journal of Open Source Software, 5(55), 2704. https://doi.org/10.21105/joss.02704
-
Breloff, T., Schwabeneder, D., Borregaard, M. K., Christ, S., Heinen, J., Yuval, Palugniok, A.,Simon, Vertechi, P., Zhanibek, Chamberlin, T., ma-laforge, Rackauckas, C., Schulz,O., Pfitzner, S., Arakaki, T., Yahyaabadi, A., Devine, J., Pech, S., ... Watson, S. S.(2021). JuliaPlots/Plots.Jl: V1.13.2. https://doi.org/10.5281/zenodo.4725318
-
Bromberger, S. & Contributors, O. (2017). Juliagraphs/Lightgraphs.Jl: An Optimized Graphs Package for the Julia Programming Language. https://doi.org/10.5281/ZENODO.889971
-
Chen, J. & Revels, J. (2016). Robust Benchmarking in Noisy Environments. arXiv:1608.04295[cs].
-
Dunning, I., Huchette, J. & Lubin, M. (2017). JuMP: A Modeling Language for Mathematical Optimization. SIAM Review, 59(2), 295–320. https://doi.org/10.1137/15M1020575
-
Gao, K., Mei, G., Piccialli, F., Cuomo, S., Tu, J. & Huo, Z. (2020). Julia Language in Machine Learning: Algorithms, Applications, and Open Issues. Computer Science Review, 37,100254. https://doi.org/10.1016/j.cosrev.2020.100254
-
Ge, H., Xu, K. & Ghahramani, Z. (2018). Turing: A Language for Flexible Probabilistic Inference. International Conference on Artificial Intelligence and Statistics, 1682–1690.
-
Innes, M., Saba, E., Fischer, K., Gandhi, D., Rudilosso, M. C., Joy, N. M., Karmali, T.,Pal, A. & Shah, V. (2018). Fashionable Modelling with Flux. CoRR,abs/1811.01457. https://arxiv.org/abs/1811.01457
-
Laurie, H. (2021). Julia Programming for Nervous Beginners. https://juliaacademy.com/p/julia-programming-for-nervous-beginner
-
Innes, M. (2018). Flux: Elegant Machine Learning with Julia. Journal of Open Source Software. https://doi.org/10.21105/joss.00602
-
Lauwens, B. & Downey, A. B. (2019). Think Julia: How to Think Like a Computer Scientist (1st edition). O’Reilly Media.
-
Nazarathy, Y., & Klok, H. (2021). Statistics with Julia: Fundamentals for Data Science, Machine Learning and Artificial Intelligence. Springer Nature.
-
Novak, K. (2021). Numerical Methods for Scientific Computing. 2nd Edition. Equal Share Press.
-
Perkel, J. M. (2019). Julia: Come for the Syntax, Stay for the Speed. Nature, 572(7767), 141–142. https://doi.org/10.1038/d41586-019-02310-3
-
Sengupta, A. & Edelman, A. (2019). Julia High Performance: Optimizations, Distributed Computing, Multithreading, and GPU Programming with Julia 1.0 and beyond, 2nd Edition. Packt Publishing.
-
Storopoli, J. (2021). Bayesian Statistics with Julia and Turing. https://storopoli.github.io/Bayesian-Julia
-
Storopoli, J., Huijzer, R. & Alonso, L. (2021). Julia Data Science. https://juliadatascience.io
-
TEDx Talks. (2020). A Programming Language to Heal the Planet Together: Julia | AlanEdelman | TEDxMIT.
-
The Julia Programming Language. (2019). JuliaCon 2019 | The Unreasonable Effectivenessof Multiple Dispatch | Stefan Karpinski.
-
White, J. M., Kamiński, B., powerdistribution, Milan Bouchet-Valat, Garborg, S., Quinn,J., Kornblith, S., cjprybol, Stukalov, A., Bates, D., Short, T., DuBois, C., Harris,H., Squire, K., Arslan, A., pdeffebach, Anthoff, D., Kleinschmidt, D., Noack, A.,... White, L. (2020). JuliaData/DataFrames.Jl: V0.22.1. https://doi.org/10.5281/zenodo.4282946
-
Xu, K., Ge, H., Tebbutt, W., Tarek, M., Trapp, M. & Ghahramani, Z. (2020). AdvancedHMC.Jl: A Robust, Modular and Efficient Implementation of Advanced HMC Algorithms. Symposium on Advances in Approximate Bayesian Inference, 1–10.
Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.