/JuliaComputation

Repository for Common Ground C25

Primary LanguageJulia

Julia: Solving Real-World Problems with Computation, Fall 2023 (under construction, 2022 below)

Logistics

MIT's numbering scheme gone nuts: (1.C25/6.C25/12.C25/16.C25/18.C25/22.C25)
This course is part of the Common Ground.

Lectures: Tuesdays & Thursdays 1-2:30 PM in room 2-142

Prerequisites: 6.100A, 18.03, 18.06 or equivalents (meaning some programming, dif eqs, and lin alg)

Instructors: A. Edelman, R. Ferrari, Y. Marzouk, P. Persson (UCB), S. Silvestri, J. Urschel, J. Williams
Teaching Assistants: Office Hours: TBD

Grading: Homeworks that may be spaced one or two weeks, to be submitted on canvas. No exams.
Lecture Recordings: Available on Canvas under the Panopto Video tab. Should be published the evening after each lecture.
Links: Worth bookmarking.

Piazza Canvas Julia JuliaHub
Discussion HW submission Language GPUs

Description

Focuses on algorithms and techniques for writing and using modern technical software in a job, lab, or research group environment that may consist of interdisciplinary teams, where performance may be critical, and where the software needs to be flexible and adaptable. Topics include automatic differentiation, matrix calculus, scientific machine learning, parallel and GPU computing, and performance optimization with introductory applications to climate science, economics, agent-based modeling, and other areas. Labs and projects focus on performant, readable, composable algorithms and software. Programming will be in Julia. Expects students have some familiarity with Python, Matlab, or R. No Julia experience necessary.

Counts as an elective for CEE students, an advanced subject (18.100 and higher) for Math students, an advanced elective for EECS students, and a computation restricted elective for NSE students. AeroAstro students can petition department to count this class as a professional subject in the computing area. (Professors may be open to petitioning for counting for other programs.)

Class is appropriate for those who enjoy math and wish to see math being used in modern contexts.

While not exactly the same as our past Computational Thinking Class... not entirely different either.

Homeworks at a glance

Homework Assigned Due Topic Solution
HW0 Sep 8 Sep 15 Getting Started HW0 sol
HW1a, HW1b Sep 15 Sep 22 Pokémon + Matrix calculus HW1a sol
HW2 Sep 24 Oct 1 Automatic differentiation HW2 sol
HW3 Sep 29 Oct 7 Mesh generation HW3 sol
HW4 Oct 15 Oct 22 Callable structs & climate ODEs HW4 sol
HW5 Oct 27 Nov 3 Matrix representations & atmospheric temperatures HW5 sol
HW6 Nov 5 Nov 10 Parallel computing & n-body problem HW6 sol
Challenge Nov 15 Dec 9 Google Street View car routing

Each student gets to turn in one homework late without justification. Further late turn ins must be justified. Remember: just because the automated tests succeed doesn't mean your code is 100% correct. It is a necessary, but not sufficient condition.

Homework solutions will be put online after each deadline.

Lectures at a glance

# Day Date Lecturer Topic Slides / Notes Notebooks
0 TAs Julia tutorial Cheat Sheets Intro to Julia, Tutorial
1 R 9/8 Edelman Intro to Julia Hyperbolic Corgi, Images, Abstraction,
2 T 9/13 Edelman Matrix Calculus Matrix Calc 1 Matrix Jacobians, Finite Differences
3 R 9/15 Edelman Matrix Calculus Matrix Calc 2 Linear Transformations, Symmetric Eigenproblems
4 T 9/20 Edelman Automatic Differentiation Scribed notes
5 R 9/22 Edelman Automatic Differentiation Handwritten Notes (to be improved) Reverse Mode AutoDiff Demo
6 T 9/27 Persson Mesh Generation Mesh generation Computational Geometry
7 R 9/29 Persson Mesh Generation
8 T 10/4 Ferrari Greenhouse Effect Greenhouse effect
9 R 10/6 Ferrari Equilibrium and transient climate sensitivity Climate sensitivity
T 10/11 Student Holiday
10 R 10/13 Silvestri Climate Science Solving the climate system
11 T 10/18 Silvestri Climate Science
12 R 10/20 Edelman Economic Model of Climate Economic Model, Optimization with JUMP
13 T 10/25 Edelman HPC and GPUs HPC and GPU Slides N-body with FLoops, JuliaHub demo
14 R 10/27 Edelman HPC and GPUs
15 T 11/1 Edelman Imaging and Convolutions
16 R 11/3 Edelman Convolutions and PDEs
17 T 11/8 Williams Handling Satellite Climate Data Lesson plan, Problem set
18 R 11/10 Williams Apache Arrow in Julia for massive datastores Lesson plan
19 T 11/15 Dalle Good programming practices + challenge Good practices, Challenge
20 R 11/17 Dalle Performance recap + graph representations Performance, Graphs
21 T 11/22 Dalle Formulating and solving linear programs Linear programming
R 11/24 Thanksgiving
22 T 11/29 Dalle Implicit differentiation Paper, Talk Package
22 bis W 11/30 Dalle (UMA seminar, see Piazza) Automatic differentiation of combinatorial layers Paper, Talk Package
23 R 12/1 Urschel Computational sports mathematics
24 T 12/6 Urschel Computational sports mathematics
25 R 12/8 Edelman Discrete and Continuous, are they so very different?
26 T 12/13 Class Party?