Coder Social home page Coder Social logo

mitmath / juliacomputation Goto Github PK

View Code? Open in Web Editor NEW
79.0 8.0 11.0 41.83 MB

Repository for Common Ground C25

Julia 100.00%
automatic-differentiation climate-science gpu-acceleration image-processing julia julia-language machine-learning optimization pluto-notebooks

juliacomputation's Introduction

Julia: Solving Real-World Problems with Computation, Fall 2023

Announcement

Office Hours are Wednesdays 4:30pm-5:30pm in 2-135.

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, G. Dalle

Teaching Assistants: Jacob Hansen ([email protected]), Nicholas Klugman ([email protected])

Office Hours: Wednesdays 4:30pm-5:30pm in 2-135

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.

Course Objectives

  1. Making mathematics your playground: By the end of the course, students will be able to write interactive Julia code that aids in their understanding of new mathematical systems or concepts.
  2. Abstractions: By the end of the course students will be able to use the unique abstractions that exist in the Julia language to write code that can be part of a huge ecosystem. (By contrast many "one-off" homeworks in traditional courses are not able, by their very nature, to reveal the value of abstraction.)
  3. Open Source and group collaborations: By the end of the course students will be able to participate in a larger open source project and also will have experienced how programming language can help break down barriers between areas making real the dream of scientific bilinguals that has been promoted at MIT. (See for example former MIT President Reif in the NYT back in 2018.)

Homeworks at a glance

Homework Assigned Due Topic Solution
HW0 Sep 7 Sep 14 Getting Started
HW1 Sep 14 Sep 21 Automatic Differentiation HW1 solutions
HW2 Sep 21 Sep 28 Matrix Calculus HW2 solutions
HW3 Sep 28 Oct 12 Julia Types HW3 solutions
HW4 Oct 12 Oct 19 Seam Carving HW4 solutions
HW5 Oct 19 Oct 26 Performance & Parallelism HW5 solutions
HW6 Oct 26 Nov 2 Challenge Checkin 1
HW7 Nov 2 Nov 9 Survey and Climate ODEs HW7 solutions
HW8 Nov 9 Nov 16 Challenge Problem Check-In 2
HW9 Nov 16 Nov 28 Matrix representations & atmospheric temperatures HW9 solutions
HW10 Nov 28 Dec 5 Challenge Problem Final Submission
Challenge Oct 17 Dec 5 Google Streetview 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 Julia tutorial Cheat Sheets
1 R 9/7 Edelman Intro to Julia Intro to Julia, Tutorial, Hyperbolic Corgi, Images, Abstraction,
2 T 9/12 Edelman Automatic Differentiation autodiff handwritten notes [AutoDiff jupyter notebook], [autodiff video]
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

juliacomputation's People

Contributors

alanedelman avatar fonsp avatar gdalle avatar jacob-hansen avatar jrdegreeff avatar nicholaskl97 avatar pitmonticone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

juliacomputation's Issues

Improvements to HW1a (Pokémon)

  • Invite students to use the documentation (? in the REPL / docs tab in Pluto)
  • Present intro tutorial before the homework
  • Say that just because checks are passing doesn't mean the answer is correct
  • Add question numbers
  • Explain what an empty struct means + how to compare mutable and immutable structs (== vs ===)
  • Clarify inner / outer constructors
  • Note on matrix indexing to prevent them from using linear indices
  • Give a reference for various kinds of type dispatch syntax (f(x::X) vs f(x::Y) where {Y<:X})
  • Specify expected output for attack(::Corgi, ::Pokemon), and state that we do not accept catch-all methods (code should rely on dispatch instead)
  • Define what we mean by method ambiguity and explicitly lead students to find and resolve it
  • Fix check_defense_philip check
  • Explain how boundaries should be handled in the step! function
  • Make it clear that the attacker cannot attack itself

Update installation instructions

The link to the installation instructions in Homework 0 is broken. Perhaps it would be nice to have a local page for this class regarding setup, instead of redirecting to the old "Computational thinking"

General remarks about the course

  • Give a unifying perspective on the topics we teach and how they come together
  • Be clearer on grading / lateness policy / other logistical aspects
  • More structured slides

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.