Three fields, one course

Computer Science

  • visualization
  • structure, abstraction
  • type systems
  • multiple dispatch
  • dynamic dispatch
  • two-language problem
  • expression problem
  • functional programming
  • arrays
  • matrices
  • dataframes
  • git, github
  • version control
  • collaboration
  • devops
  • language design
  • constraint solvers
  • mathematical programming solvers
  • heuristics
  • DSLs

Mathematics

  • matrices
  • stencils
  • univariate/multivariate functions
  • vector calculus
  • matrix calculus
  • sequence convergence
  • principal component analysis
  • dimensionality reduction
  • matrix rank
  • projections, rotations
  • eigenvalues
  • singular value decomposition
  • outliers, noise
  • data bulk, data center
  • statistics
  • correlation
  • random sampling
  • probability density function
  • monte carlo methods
  • random walks
  • continuous limit
  • ordinary differential equations
  • curve fitting
  • partial differential equations
  • finite differences
  • discretization
  • bifurcations
  • hysteresis
  • optimization
  • gradient descent
  • global optimization
  • constrained optimization
  • nonlinear optimization
  • inverse modeling

Applications

  • social science
  • epidemic modelling
  • agent based modelling
  • climate economics
  • climate science
  • weather forecasting
  • ocean/atmosphere models
  • optimisation
  • path finding
  • image data
  • image filtering
  • seam carving
  • data analysis
  • model fitting
  • random data

Highlights

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.

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.

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!

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.

Why is this course different?

We believe many classes cover what we call the vertices — specific topics in computer science, math, or an application. A student is left to figure out the edges, meaning the intellectual connections between the topics on their own as they mature. Some classes have you learn a math topic and you can then for homework implement an algorithm or application. The goal for this class, is to accelerate the process by which a student can participate in the exciting world of software development be it the big open source universe or privately, by seeing how math with CS abstractions can allow for applications that can be part of a big huge ecosystem rather than a one-off homework.
… and have more fun in the process!

Details

See also the course repository github.com/mitmath/18S191.

What people are saying about the course!

Meet our staff

Lecturers: Alan Edelman, David P. Sanders, Charles E. Leiserson

Technical lead: Fons van der Plas

Assistants: Bola Malek, Logan Kilpatrick

Guest lecturers: Henri F. Drake, Fons van der Plas, more to be announced

Get the T-shirt

There is a MIT Computational Thinking t-shirt available for those who really enjoyed the course, you can find it on the Julia Language's Bonfire Shop.

Introduction video from Fall 2020


How to cite

If you use or are inspired by any material, would you be so kind to prominently display

Some material on this website is based on:
Computational Thinking, a live online Julia/Pluto textbook. (computationalthinking.mit.edu)