This repository is based on the course material from "Computational Thinking, a live online Julia/Pluto textbook that is available at Github.
Let me start by thanking deeply the original authors, profs. Alan Edelman, David P. Sanders, Charles E. Leiserson, Henri F. Drake, Teaching Assistant Bola Malek, and Techinical Assistants Fons van der Plas, Logan Kilpatrick for making available such wonderful material under a Creative Commons Licence that allows remix the original content.
Esse repositório é baseado no material de "Computational Thinking, a live online Julia/Pluto textbook que está disponível no Github.
Deixo aqui um enorme agradecimento aos autores originais, professores Alan Edelman, David P. Sanders, Charles E. Leiserson, Henri F. Drake, assistente de ensino Bola Malek e os auxiliares técnicos Fons van der Plas, Logan Kilpatrick por criarem esse material sob uma licença aberta que permite a sua adaptação e re-uso.
Esse é um curso de laboratório de computação científica - MS513 - que irá usar a linguagem de programação Julia em exemplos "do mundo real" em que aplicaremos ideias modelagem matemática e computacional e também de análise de dados. A ideia é ter um curso do tipo "mão na massa", onde escrever e entender código será nossa principal forma de comunicação.
As aulas serão terças e quintas às 8hs. Durante as aulas apresentarei cadernos Julia com código e discutirei os problemas que vamos estudar empregando técnicas modernas de programação e matemática aplicada para atacá-los. Além disso, temos o servidor Discord da disciplina onde podemos interagir em fóruns. O link do servidor Discord https://github.com/pjssilva/LabCompSci.
Quintas 13-14 h, Sala 137, IMECC ou atentimento pessoal sob demanda a combinar com o(a) aluno(a).
Será feita através de trabalhos computacionais durante o semestre e duas provas presenciais no laboratório.
No primeiro semestre de 2024 as datas das provas são 30/04 e 27/06*.
Médias: Definimos ME
= "média aritméticas das listas descartando as duas
piores notas", e MP
= "média aritmética das provas". A média ao final do
semestre será M = 0.7*ME + 0.3*MP
, se MP >= 5
, caso contrário M = MP
. Se
M >= 5
, o aluno está aprovado. Se 2.0 <= M < 5.0
, o aluno deverá fazer o
exame no dia 11/07. A média final será então max(M, 0.5*M + 0.5*Exame)
. Se
MF >= 5.0
, o aluno estará aprovado.
Programação para aplicações científicas baseadas em linguagens dinâmicas de alto desempenho. Introdução a conceitos como programação por arrays, programação dinâmica, paralelismo, aleatoriedade, simulações estocásticas, resolução numérica de equações diferenciais e otimização.
O curso busca apresentar um ambiente moderno de computação científica resolvendo problemas reais para motivar os alunos. As aulas devem ser ministradas em ambiente de laboratório, para que os alunos possam testar os exemplos de código e fazer modificações ao longo da discussão.
-
Introdução a uma linguagem dinâmica para computação de alto desempenho. Conceitos de estruturação de código em tornos de tipos e programação polimórfica.
-
Funções matemáticas em linguagens de programação, diferenciação automática.
-
Programação por arrays e operações em múltiplos objetos com exemplos em aplicações científicas.
-
Noções de programação dinâmica com exemplos em aplicações científicas.
-
Noções de programação paralela com exemplos em aplicações científicas.
-
Aleatoriedade e simulação estocástica com exemplos em aplicações científicas.
-
Resolução numérica de equações deferenciais através de pacotes computacionais com exemplos em aplicações científicas.
-
Exemplos do uso de otimização no controle de equações diferenciais com exemplos em aplicações científicas.
-
Introduction to computational thinking for real-world problems. https://github.com/mitmath/18S191
-
Balbaert, I. Julia 1.0 Programming: Dynamic and high-performance programming to build fast scientific applications, 2ª edição: Packt Publishing, 2018.
-
Führer, Claus, Olivier Verdier, e Jan Erik Solem. Scientific Computing with Python: High-Performance Scientific Computing with NumPy, SciPy, and Pandas. Second edition. Birmingham: Packt Publishing, 2021.
-
Bezanson, J.; Edelman, A.; Karpinski, S.; Shah, V. B. Julia: A Fresh Approach to Numerical Computing. SIAM Rev. 2017, 59 (1), 65–98. https://doi.org/10.1137/141000671.
-
Sengupta, Avik. Julia High Performance: Optimizations, Distributed Computing, Multithreading, and GPU Programming with Julia 1.0 and Beyond. Second edition. Birmingham Mumbai: Packt Publishing, 2019.
-
Johansson, Robert. Numerical Python. New York, NY: Apress, 2018.
MC102, MS211