Coursework

Present Coursework

6.031 - Elements of Software Construction

Introduces fundamental principles and techniques of software development: how to write software that is safe from bugs, easy to understand, and ready for change. Topics include specifications and invariants; testing, test-case generation, and coverage; abstract data types and representation independence; design patterns for object-oriented programming; concurrent programming, including message passing and shared memory concurrency, and defending against races and deadlock; and functional programming with immutable data and higher-order functions. Includes weekly programming exercises and larger group programming projects.

6.046 - Design and Analysis of Algorithms

Techniques for the design and analysis of efficient algorithms, emphasizing methods useful in practice. Topics include sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; greedy algorithms; amortized analysis; graph algorithms; and shortest paths. Advanced topics may include network flow; computational geometry; number-theoretic algorithms; polynomial and matrix calculations; caching; and parallel computing.

Past Coursework

6.036 - Introduction to Machine Learning

Introduces principles, algorithms, and applications of machine learning from the point of view of modeling and prediction; formulation of learning problems; representation, over-fitting, generalization; clustering, classification, probabilistic modeling; and methods such as support vector machines, hidden Markov models, and neural networks

6.006 - Introduction to Algorithms

Introduction to mathematical modeling of computational problems, as well as common algorithms, algorithmic paradigms, and data structures used to solve these problems. Emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.

6.009 - Fundamentals of Programming

Introduces fundamental concepts of programming. Designed to develop skills in applying basic methods from programming languages to abstract problems. Topics include programming and Python basics, computational concepts, software engineering, algorithmic techniques, data types, and recursion. Lab component consists of software design, construction, and implementation of design.

6.0002 - Introduction to Computational Thinking and Data Science

Provides an introduction to using computation to understand real-world phenomena. Topics include plotting, stochastic programs, probability and statistics, random walks, Monte Carlo simulations, modeling data, optimization problems, and clustering.

6.041 - Introduction to Probability

An introduction to probability theory, the modeling and analysis of probabilistic systems, and elements of statistical inference. Probabilistic models, conditional probability. Discrete and continuous random variables. Expectation and conditional expectation, and further topics about random variables. Limit Theorems. Bayesian estimation and hypothesis testing. Elements of classical statistical inference. Bernoulli and Poisson processes. Markov chains.

8.033 - Relativity

Einstein's postulates; consequences for simultaneity, time dilation, length contraction, and clock synchronization; Lorentz transformation; relativistic effects and paradoxes; Minkowski diagrams; invariants and four-vectors; momentum, energy, and mass; particle collisions. Relativity and electricity; Coulomb's law; magnetic fields. Brief introduction to Newtonian cosmology. Introduction to some concepts of general relativity; principle of equivalence. The Schwarzchild metric; gravitational red shift; particle and light trajectories; geodesics; Shapiro delay.

8.03 - Physics III

Mechanical vibrations and waves; simple harmonic motion, superposition, forced vibrations and resonance, coupled oscillations, and normal modes; vibrations of continuous systems; reflection and refraction; phase and group velocity. Optics; wave solutions to Maxwell's equations; polarization; Snell's Law, interference, Huygens's principle, Fraunhofer diffraction, and gratings.

8.223 - Classical Mechanics II

A broad, theoretical treatment of classical mechanics, useful in its own right for treating complex dynamical problems, but essential to understanding the foundations of quantum mechanics and statistical physics. Generalized coordinates, Lagrangian and Hamiltonian formulations, canonical transformations, and Poisson brackets. Applications to continuous media. The relativistic Lagrangian and Maxwell's equations.

8.02 - Physics II

Introduction to electromagnetism and electrostatics: electric charge, Coulomb's law, electric structure of matter; conductors and dielectrics. Concepts of electrostatic field and potential, electrostatic energy. Electric currents, magnetic fields and Ampere's law. Magnetic materials. Time-varying fields and Faraday's law of induction. Basic electric circuits. Electromagnetic waves and Maxwell's equations. Subject taught using the TEAL (Technology Enabled Active Learning) studio format which utilizes small group interaction and current technology to help students develop intuition about, and conceptual models of, physical phenomena.

18.03 - Differential Equations

Study of differential equations, including modeling physical systems. Solution of first-order ODEs by analytical, graphical, and numerical methods. Linear ODEs with constant coefficients. Complex numbers and exponentials. Inhomogeneous equations: polynomial, sinusoidal, and exponential inputs. Oscillations, damping, resonance. Fourier series. Matrices, eigenvalues, eigenvectors, diagonalization. First order linear systems: normal modes, matrix exponentials, variation of parameters. Heat equation, wave equation. Nonlinear autonomous systems: critical point analysis, phase plane diagrams.