MIT 18.337/6.338

Modern Numerical Computing


  1. 10/05: Project rules published! Topic proposal on Oct 11 during office hours!
  2. 9/30: Check out the note on using Google Colab to run your notebooks.
  3. 9/27: Homework 3 due Wednesday October 3 is up.
  4. 9/18: Homework 2 due Monday September 24 is up.
  5. 9/12: Office Hours are on Thursday from 4 PM - 5:30 PM at the Julia Lab (Building 32-G, 7th Floor). Enter Stata, find the Gates tower, come to the 7th floor, and follow the directions to the Julia lab.
  6. 9/8: Homework 1 due Monday September 17 is up.
  7. Join the Piazza forum for this course.
  8. Please take the pre-class survey.


Have you ever wondered why:

In this course we'll break down all the barriers that get in the way of writing high performance code. We expect to cover topics in

and much more...

Also, watch out for exciting guest lectures!

Getting Started

  1. Create an account on GitHub and add your SSH key.
  2. Fill out the pre-class survey.
  3. Signup onto Piazza.
  4. Install Julia 1.0 on your laptop (platform specific instructions)
  5. We recommend using Julia via Juno, VSCode or Jupyter

Using Google Colab

Students who would like to run the notebooks on GPUs can do so via Google Colab. The machine learning notebooks are available on Google Drive, provided you install Julia on Colab via the colab_install_julia notebook.

Office Hours

TAs will be available at the JuliaLab in CSAIL every Thursday from 4 PM to 5:30 PM. To get there, go to Stata (Building 32), find the Gates Building and take the lift to the 7th floor. You will find directions to the Julia Lab on the walls. If these office hours are inconvenient, just walk up to the TAs and they'll help you.

Update: We just realised that the office hours are inconvenient for some people. You can contact the TA at ranjanan AT mit DOT edu and speak separately about any questions or issues.


Homework = 40% (Roughly 6 assignments)

Midterm Project = 20%

Final Project = 40%


Date Topic Required Reading
Lecture 1 9/5 Why Julia? Julia: A Fresh Approach to Numerical Computing
Lecture 2 9/10 Natural Language Processing Demos
Machine Learning Tutorials 2 and 3
Lecture 3 9/12 Julia is Fast, Polymorphism, Generic Programming Why we created Julia
Lecture 4 9/17 GPU and Distributed
Lecture 5 9/19 Machine Learning Tutorials 4 and 5
(Multi-layer Perceptrons and Convolutional Nets)
Lecture 6 9/24 Macros and Metaprogramming Latexify.jl (JuliaCon 2018)
Lecture 7 9/26 Machine Learning Tutorials 6, 7, and 8
(Recurrent Nets)
Machine Learning in Julia (JuliaCon 2018)
Lecture 8 10/1 Reinforcement Learning David Silver's Reinforcement Learning Lectures
Stanford Reinforcement Learning Slides
Lecture 9 10/3 Guest Lecture: "Modia.jl - A package for modelling and simulation" by Dr. Chris Laughman (Mitsubishi Electric Research Lab)
No Lecture 10/8Holiday (Columbus Day)
Lecture 10 10/10 Differential Equations
Lecture 11 10/15 Memory model and performance Performance tips - Julia docs
Lecture 12 10/17 Guest Lecture: "Building a Human Brain Scale Neural Network with D4M.jl and Apache Accumulo" by Dr. Jeremy Kepner
Lecture 13 10/22 Spectral Partitioning
Lecture 14 10/24 Graph Algorithms in Julia
Lecture 15 10/29
Lecture 16 10/31 Validated Numerics in Julia
Lecture 17 11/5
Lecture 18 11/7
No Lecture 11/12Holiday (Veterans' Day)
Lecture 19 11/14
Lecture 20 11/19
No Lecture 11/21Cancelled (Thanksgiving travel)
Lecture 21 11/26
Lecture 22 11/28 Guest Lecture: Juan Pablo Vielma
Lecture 23 12/3
Lecture 24 12/5
Lecture 25 12/10
Lecture 26 12/12


To submit the homework, you have two options:

  1. Homework 1: Getting Started
  2. Homework 2: Understanding Types in Julia
  3. Homework 3: Expression Trees


Check out the project rules!

Previous Classes