Skip to content

Latest commit

 

History

History
121 lines (94 loc) · 26.6 KB

README.md

File metadata and controls

121 lines (94 loc) · 26.6 KB

Julia: Solving Real-World Problems with Computation, Fall 2024
(course material work in progress)

Real-world problems

We will take applications such as climate change and show how you can participate in the big open source community looking to find solutions to challenging problems with exposure to github and parallel computing.

An interactive lecture about climate economics. You can see the user moving the global CO2 emissions in one graph, and a second graph with global temperatures over 200 years responds.

Corgi in the washing machine

You will learn mathematical ideas by immersion into the mathematical process, performing experiments, seeing the connections, and seeing just how much fun math can be.

An image of prof. Philip the Corgi, but the whole image is swirled and twisted using a mathematical transformation. Overlaying grid lines are also twisted, showing the non-linearity of the transformation.

Revolutionary interactivity

Our course material is built using real code, and instead of a book, we have a series of interactive notebooks. On our website, you can play with sliders, buttons and images to interact with our simulations. You can even go further, and modify and run any code on our website!

An interactive lecture about the Newton method. A parabolic function is graphed, and we use sliders to control the number of iterations of the Newton method. Each iteration shows a tangent, demonstrating the algorithm.

Learning Julia

In literature it’s not enough to just know the technicalities of grammar. In music it’s not enough to learn the scales. The goal is to communicate experiences and emotions. For a computer scientist, it’s not enough to write a working program, the program should be written with beautiful high level abstractions that speak to your audience. This class will show you how.

A snippet of Julia code defining a new type called Sphere, with fields 'position', 'radius' and 'index of refration'.

Check out our interactive lecture material on computationalthinking.mit.edu!












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: Mondays and Wednesdays 1-2:30 PM in room 4-149.

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

Instructors: A. Edelman, more TBA

Teaching Assistants: TBA

Office Hours: TBA

Lecture Recordings: ( Hopefully) Available on Canvas under the Panopto Video tab. Should be published the evening after each lecture.
Links: Worth bookmarking.

Piazza TBA Canvas TBA Julia
Discussion HW submission Language

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.

Course Objective

Make mathematics your playground: Throughout the course, students will be encouraged to adopt a new approach to thinking about, learning, and communicating technical systems and concepts. We will demonstrate and produce Julia code which exemplifies a living, interactive approach to make math a fun and playful experience.
Perhaps similar to a CIM class (though this class is NOT officially a CIM , sorry) we will have students present early versions of notebooks, with critiques (and you get to critique the professor too). Nearly all university classes emphasize communication through writing and presentations, this class adds communication through computation.

Grading

Percent Comment
Three Class Presentations 25%
Final Project 35%
Class Participation 15%
Homeworks 25%

Homeworks at a glance

Homework Assigned Due Topic Solution
HW0 Sep 4 Sep 11 Getting Started

Lectures at a glance (Lectures being updated from 2023 as we go, but this semester there will be many more student presentations and discussions. Participation is a must.)

# Day Date Lecturer Topic Slides / Notes Notebooks
0 Julia tutorial Cheat Sheets
1 W 9/4 Edelman Communicate With Computation Intro to Class Intro to Julia, Tutorial, Hyperbolic Corgi, Images, Abstraction,
2 M 9/9 Edelman Maybe you know Random Variables, but not as types? slides Pluto Video Random Variables As Types
MOSTLY IGNORE BELOW
3 R 9/14 Edelman Automatic Differentiation Reverse Mode AutoDiff Demo
4 T 9/19 Edelman Matrix Calculus Matrix Calc 1 Matrix Jacobians, Finite Differences
5 R 9/21 Edelman Matrix Calculus Matrix Calc 2 Linear Transformations, Symmetric Eigenproblems
6 T 9/26 Edelman Differential Equations Lec 1 Time Stepping (background), ODEs and parameterized types (main topic), Resistors and Stencils (touched on this)
7 R 9/28 Edelman Differential Equations Lec 2
8 T 10/3 Edelman Imaging and Convolutions Image Transformation notebook
9 R 10/5 Edelman Imaging and Convolutions 2 Seam Carving notebook, Linear Transformations notebook
T 10/10 Student Holiday
10 R 10/12 Edelman HPC and GPUs HPC and GPU Slides
11 T 10/17 Dalle Package development Challenge, Good practices
12 R 10/19 Dalle Performance Quiz Package creation, Performance
13 T 10/24 Dalle Graphs Quiz Graphs
14 R 10/26 Dalle Linear programming Quiz Linear programming
15 T 10/31 Ferrari Greenhouse Effect
16 R 11/2 Ferrari Equilibrium and transient climate sensitivity Earth's Temperature Model Mean Surface Temp Modeling
17 T 11/7 Drake Economic Model of Climate Slides Economic Model, Optimization with JUMP
18 R 11/9 Edelman Snowball Earth & Parallel/GPU computing Snowball Earth and hysteresis
19 T 11/14 Persson Mesh Generation Mesh generation Computational Geometry
20 R 11/16 Persson Mesh Generation
21 T 11/21 Edelman Floating-point Arithmetic
R 11/23 Thanksgiving
22 T 11/28 Klugman Fast inverse square root Notebook
23 R 11/30 Silvestri Climate Science Solving the climate system
24 T 12/5 Silvestri Climate Science
25 R 12/7 Edelman Discrete and Continuous, are they so very different?
26 T 12/12 Class Party