Registrar Home | Registrar Search:
 
  MIT Course Picker | Hydrant     
Home | Subject Search | Help | Symbols Help | Pre-Reg Help | Final Exam Schedule | My Selections
 

Course 6: Electrical Engineering and Computer Science
Fall 2024


Programming & Software Engineering

6.100A Introduction to Computer Science Programming in Python
______

Undergrad (Fall, Spring); first half of term
Prereq: None
Units: 2-0-4
Credit cannot also be received for 6.100L
Add to schedule Lecture: MW3-4.30 (ENDS OCT 25) (26-100) Lab: TBA Recitation: F10 (ENDS OCT 25) (37-212) or F11 (ENDS OCT 25) (37-212) or F1 (ENDS OCT 25) (6-120) or F2 (ENDS OCT 25) (6-120) or F10 (ENDS OCT 25) (1-190) or F11 (ENDS OCT 25) (2-190) or F1 (ENDS OCT 25) (32-123)
______
Introduction to computer science and programming for students with little or no programming experience. Students develop skills to program and use computational techniques to solve problems. Topics include the notion of computation, Python, simple algorithms and data structures, testing and debugging, and algorithmic complexity. Combination of 6.100A and 6.100B or 16.C20 counts as REST subject. Final given in the seventh week of the term.
A. Bell
Textbooks (Fall 2024)

6.100B Introduction to Computational Thinking and Data Science
______

Undergrad (Fall, Spring); second half of term
Prereq: 6.100A or permission of instructor
Units: 2-0-4
Credit cannot also be received for 9.C20, 16.C20, 18.C20, CSE.C20
Add to schedule Lecture: MW3-4.30 (BEGINS OCT 28) (26-100) Lab: TBA Recitation: F10 (BEGINS OCT 28) (37-212) or F11 (BEGINS OCT 28) (37-212) or F1 (BEGINS OCT 28) (6-120) or F2 (BEGINS OCT 28) (6-120) or F10 (BEGINS OCT 28) (1-190) or F11 (BEGINS OCT 28) (2-190) or F1 (BEGINS OCT 28) (32-123)
______
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. Combination of 6.100A and 6.100B counts as REST subject.
A. Bell
Textbooks (Fall 2024)

6.100L Introduction to Computer Science and Programming
______

Undergrad (Fall, Spring)
Prereq: None
Units: 2-0-4
Credit cannot also be received for 6.100A
Add to schedule Lecture: MW3-4.30 (54-100)
______
Introduction to computer science and programming for students with no programming experience. Presents content taught in 6.100A over an entire semester. Students develop skills to program and use computational techniques to solve problems. Topics include the notion of computation, Python, simple algorithms and data structures, testing and debugging, and algorithmic complexity. Lectures are viewed outside of class; in-class time is dedicated to problem-solving and discussion. Combination of 6.100L and 6.100B or 16.C20 counts as REST subject.
A. Bell
Textbooks (Fall 2024)

6.1010 Fundamentals of Programming
______

Undergrad (Fall, Spring) Institute Lab
Prereq: 6.100A
Units: 2-4-6
URL: https://py.mit.edu
Add to schedule Lecture: MW9 (36-156) or MW10 (4-145) or MW11 (2-190, 36-155) or MW1 (3-270) or MW2 (36-112) or MW3 (36-156) Lab: F10-1 (34-501) or F2-5 (34-501) +final
______
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. Enrollment may be limited.
M. Goldman
No required or recommended textbooks

6.1020 Software Construction
______

Undergrad (Spring)
Prereq: 6.1010
Units: 3-0-12
______
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.
Staff

6.1040 Software Design
______

Undergrad (Fall)
Prereq: 6.1020 and 6.1200
Units: 4-0-14
Add to schedule Lecture: MW2.30-4 (1-190)
______
Provides design-focused instruction on how to build complex software applications. Design topics include classic human-computer interaction (HCI) design tactics (need finding, heuristic evaluation, prototyping, user testing), conceptual design (inventing, modeling and evaluating constituent concepts), social and ethical implications, abstract data modeling, and visual design. Implementation topics include reactive front-ends, web services, and databases. Students work both on individual projects and a larger team project in which they design and build full-stack web applications.
A. Satyanarayan
No textbook information available

6.1060 Software Performance Engineering
______

Undergrad (Fall)
Prereq: 6.1020, 6.1210, and 6.1910
Units: 3-12-3
Add to schedule Lecture: TR9.30-11 (45-230) Lab: F10-12 (4-265) or F1-3 (24-115) or F3-5 (36-112) or F10-12 (36-112) or F1-3 (4-153) or F3-5 (4-153) or F3-5 (4-149)
______
Project-based introduction to building efficient, high-performance and scalable software systems. Topics include performance analysis, algorithmic techniques for high performance, instruction-level optimizations, vectorization, cache and memory hierarchy optimization, and parallel programming.
C. Leiserson
No textbook information available

6.5060 Algorithm Engineering
______

Graduate (Spring)
Prereq: 6.1060 and 6.1220
Units: 3-0-9
______
Covers the theory and practice of algorithms and data structures. Topics include models of computation, algorithm design and analysis, and performance engineering of algorithm implementations. Presents the design and implementation of sequential, parallel, cache-efficient, and external-memory algorithms. Illustrates many of the principles of algorithm engineering in the context of parallel algorithms and graph problems.
Staff

6.5080 Multicore Programming
______

Graduate (Spring)
(Subject meets with 6.5081)
Prereq: 6.1210
Units: 4-0-8
______
Introduces principles and core techniques for programming multicore machines. Topics include locking, scalability, concurrent data structures, multiprocessor scheduling, load balancing, and state-of-the-art synchronization techniques, such as transactional memory. Includes sequence of programming assignments on a large multicore machine, culminating with the design of a highly concurrent application. Students taking graduate version complete additional assignments.
N. Shavit

6.5081 Multicore Programming
______

Undergrad (Spring)
(Subject meets with 6.5080)
Prereq: 6.1210
Units: 4-0-8
______
Introduces principles and core techniques for programming multicore machines. Topics include locking, scalability, concurrent data structures, multiprocessor scheduling, load balancing, and state-of-the-art synchronization techniques, such as transactional memory. Includes sequence of programming assignments on a large multicore machine, culminating with the design of a highly concurrent application. Students taking graduate version complete additional assignments.
Staff

Programming Languages

6.1100 Computer Language Engineering
______

Undergrad (Spring)
Prereq: 6.1020 and 6.1910
Units: 4-4-4
______
Analyzes issues associated with the implementation of higher-level programming languages. Fundamental concepts, functions, and structures of compilers. The interaction of theory and practice. Using tools in building software. Includes a multi-person project on compiler design and implementation.
Staff

6.1120 Dynamic Computer Language Engineering
______

Undergrad (Fall)
Prereq: 6.1020 or 6.1910
Units: 4-4-4
Add to schedule Lecture: MWF1 (56-114) Recitation: TR1 (36-155)
______
Studies the design and implementation of modern, dynamic programming languages. Topics include fundamental approaches for parsing, semantics and interpretation, virtual machines, garbage collection, just-in-time machine code generation, and optimization. Includes a semester-long, group project that delivers a virtual machine that spans all of these topics.
M. Rinard
No textbook information available

6.5110 Foundations of Program Analysis
______

Not offered academic year 2025-2026Graduate (Fall)
Prereq: 6.1100
Units: 3-0-9
Add to schedule TBA.
______
Presents major principles and techniques for program analysis. Includes formal semantics, type systems and type-based program analysis, abstract interpretation and model checking and synthesis. Emphasis on Haskell and Ocaml, but no prior experience in these languages is assumed. Student assignments include implementing of techniques covered in class, including building simple verifiers.
A. Solar-Lezama
No textbook information available

6.5120 Formal Reasoning About Programs
______

Graduate (Spring)
Prereq: 6.1020 and 6.1200
Units: 3-0-9
______
Surveys techniques for rigorous mathematical reasoning about correctness of software, emphasizing commonalities across approaches. Introduces interactive computer theorem proving with the Coq proof assistant, which is used for all assignments, providing immediate feedback on soundness of logical arguments. Covers common program-proof techniques, including operational semantics, model checking, abstract interpretation, type systems, program logics, and their applications to functional, imperative, and concurrent programs. Develops a common conceptual framework based on invariants, abstraction, and modularity applied to state and labeled transition systems.
Staff

6.5150 Large-scale Symbolic Systems
______

Graduate (Spring)
(Subject meets with 6.5151)
Prereq: 6.4100 or permission of instructor
Units: 3-0-9
______
Concepts and techniques for the design and implementation of large software systems that can be adapted to uses not anticipated by the designer. Applications include compilers, computer-algebra systems, deductive systems, and some artificial intelligence applications. Covers means for decoupling goals from strategy, mechanisms for implementing additive data-directed invocation, work with partially-specified entities, and how to manage multiple viewpoints. Topics include combinators, generic operations, pattern matching, pattern-directed invocation, rule systems, backtracking, dependencies, indeterminacy, memoization, constraint propagation, and incremental refinement. Students taking graduate version complete additional assignments.
G. J. Sussman

6.5151 Large-scale Symbolic Systems
______

Undergrad (Spring)
(Subject meets with 6.5150)
Prereq: 6.4100 or permission of instructor
Units: 3-0-9
______
Concepts and techniques for the design and implementation of large software systems that can be adapted to uses not anticipated by the designer. Applications include compilers, computer-algebra systems, deductive systems, and some artificial intelligence applications. Covers means for decoupling goals from strategy, mechanisms for implementing additive data-directed invocation, work with partially-specified entities, and how to manage multiple viewpoints. Topics include combinators, generic operations, pattern matching, pattern-directed invocation, rule systems, backtracking, dependencies, indeterminacy, memoization, constraint propagation, and incremental refinement. Students taking graduate version complete additional assignments.
Staff

6.5160[J] Classical Mechanics: A Computational Approach
______

Graduate (Fall)
(Same subject as 8.351[J], 12.620[J])
Prereq: Physics I (GIR), 18.03, and permission of instructor
Units: 3-3-6
Add to schedule Lecture: MWF1 (54-824) Lab: W EVE (7-10 PM) (54-824)
______
Classical mechanics in a computational framework, Lagrangian formulation, action, variational principles, and Hamilton's principle. Conserved quantities, Hamiltonian formulation, surfaces of section, chaos, and Liouville's theorem. Poincaré integral invariants, Poincaré-Birkhoff and KAM theorems. Invariant curves and cantori. Nonlinear resonances, resonance overlap and transition to chaos. Symplectic integration. Adiabatic invariants. Applications to simple physical systems and solar system dynamics. Extensive use of computation to capture methods, for simulation, and for symbolic analysis. Programming experience required.
J. Wisdom, G. J. Sussman
Textbooks (Fall 2024)

Theoretical Computer Science

6.1200[J] Mathematics for Computer Science
______

Undergrad (Fall, Spring) Rest Elec in Sci & Tech
(Same subject as 18.062[J])
Prereq: Calculus I (GIR)
Units: 5-0-7
Add to schedule Lecture: TR2.30-4 (26-100) Recitation: WF10 (26-168) or WF1 (38-166, 24-112) or WF2 (26-168, 38-166, 24-307) or WF3 (26-168, 38-166, 24-307) or WF4 (26-168) or WF10 (36-144) or WF11 (26-168, 36-144, 13-3101) or WF12 (26-168, 36-144, 13-3101) or WF1 (26-168) +final
______
Elementary discrete mathematics for science and engineering, with a focus on mathematical tools and proof techniques useful in computer science. Topics include logical notation, sets, relations, elementary graph theory, state machines and invariants, induction and proofs by contradiction, recurrences, asymptotic notation, elementary analysis of algorithms, elementary number theory and cryptography, permutations and combinations, counting tools, and discrete probability.
F. Leighton
No textbook information available

6.120A Discrete Mathematics and Proof for Computer Science
______

Undergrad (Spring); second half of term
Prereq: Calculus I (GIR)
Units: 3-0-3
______
Subset of elementary discrete mathematics for science and engineering useful in computer science. Topics may include logical notation, sets, done relations, elementary graph theory, state machines and invariants, induction and proofs by contradiction, recurrences, asymptotic notation, elementary analysis of algorithms, elementary number theory and cryptography, permutations and combinations, counting tools.
Staff

6.1210 Introduction to Algorithms
______

Undergrad (Fall, Spring)
Prereq: 6.100A and (6.1200 or (6.120A and (6.3700, 6.3800, 18.05, or 18.600)))
Units: 5-0-7
Add to schedule Lecture: TR11-12.30 (26-100) Recitation: WF10 (34-304, 35-310, 34-303) or WF11 (34-304, 35-310, 34-303) or WF12 (4-159, 34-304) or WF1 (34-304, 35-310) or WF2 (35-310, 36-155) or WF3 (36-155) or WF4 (36-155) or WF12 (3-442) or WF1 (3-442) or WF2 (35-308) or WF12 (34-301) +final
______
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. Enrollment may be limited.
B. Chapman
No textbook information available

6.1220[J] Design and Analysis of Algorithms
______

Undergrad (Fall, Spring)
(Same subject as 18.410[J])
Prereq: 6.1200 and 6.1210
Units: 4-0-8
Add to schedule Lecture: TR11-12.30 (34-101) Recitation: F10 (36-155) or F1 (26-210, 36-156) or F3 (34-301) or F9 (34-301) or F2 (36-153, 36-112) or F3 (36-153) or F10 (36-156) or F11 (36-155, 36-156) or F12 (26-210, 36-156) +final
______
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.
S. Raghuraman
Textbooks (Fall 2024)

6.1400[J] Computability and Complexity Theory
______

Undergrad (Spring)
(Same subject as 18.400[J])
Prereq: (6.1200 and 6.1210) or permission of instructor
Units: 4-0-8
______
Mathematical introduction to the theory of computing. Rigorously explores what kinds of tasks can be efficiently solved with computers by way of finite automata, circuits, Turing machines, and communication complexity, introducing students to some major open problems in mathematics. Builds skills in classifying computational tasks in terms of their difficulty. Discusses other fundamental issues in computing, including the Halting Problem, the Church-Turing Thesis, the P versus NP problem, and the power of randomness.  
Staff

6.1420 Fixed Parameter and Fine-grained Computation
______

Not offered academic year 2025-2026Undergrad (Fall)
Prereq: 6.1200, 6.1210, and (6.1220, 6.1400, or 18.404)
Units: 3-0-9
Add to schedule Lecture: TR11-12.30 (34-304)
______
An overview of the theory of parameterized algorithms and the "problem-centric" theory of fine-grained complexity, both of which reconsider how to measure the difficulty and feasibility of solving computational problems. Topics include: fixed-parameter tractability (FPT) and its characterizations, the W-hierarchy (W[1], W[2], W[P], etc.), 3-sum-hardness, all-pairs shortest paths (APSP)-equivalences, strong exponential time hypothesis (SETH) hardness of problems, and the connections to circuit complexity and other aspects of computing.
V. Vassilevska Williams
No textbook information available

6.5210[J] Advanced Algorithms
______

Graduate (Fall)
(Same subject as 18.415[J])
Prereq: 6.1220 and (6.1200, 6.3700, or 18.600)
Units: 5-0-7
Add to schedule Lecture: MWF2.30-4 (32-123)
______
First-year graduate subject in algorithms. Emphasizes fundamental algorithms and advanced methods of algorithmic design, analysis, and implementation. Surveys a variety of computational models and the algorithms for them. Data structures, network flows, linear programming, computational geometry, approximation algorithms, online algorithms, parallel algorithms, external memory, streaming algorithms.
D. Karger
No textbook information available

6.5220[J] Randomized Algorithms
______

Not offered academic year 2025-2026Graduate (Spring)
(Same subject as 18.416[J])
Prereq: (6.1200 or 6.3700) and (6.1220 or 6.5210)
Units: 5-0-7
______
Studies how randomization can be used to make algorithms simpler and more efficient via random sampling, random selection of witnesses, symmetry breaking, and Markov chains. Models of randomized computation. Data structures: hash tables, and skip lists. Graph algorithms: minimum spanning trees, shortest paths, and minimum cuts. Geometric algorithms: convex hulls, linear programming in fixed or arbitrary dimension. Approximate counting; parallel algorithms; online algorithms; derandomization techniques; and tools for probabilistic analysis of algorithms.
D. R. Karger

6.5230 Advanced Data Structures
______

Not offered academic year 2025-2026Graduate (Spring)
Prereq: 6.1220
Units: 3-0-9
______
More advanced and powerful data structures for answering several queries on the same data. Such structures are crucial in particular for designing efficient algorithms. Dictionaries; hashing; search trees. Self-adjusting data structures; linear search; splay trees; dynamic optimality. Integer data structures; word RAM. Predecessor problem; van Emde Boas priority queues; y-fast trees; fusion trees. Lower bounds; cell-probe model; round elimination. Dynamic graphs; link-cut trees; dynamic connectivity. Strings; text indexing; suffix arrays; suffix trees. Static data structures; compact arrays; rank and select. Succinct data structures; tree encodings; implicit data structures. External-memory and cache-oblivious data structures; B-trees; buffer trees; tree layout; ordered-file maintenance. Temporal data structures; persistence; retroactivity.
Staff

6.5240 Sublinear Time Algorithms
______

Not offered academic year 2025-2026Graduate (Fall)
Prereq: 6.1220 or permission of instructor
Units: 3-0-9
Add to schedule Lecture: MW1-2.30 (36-144)
______
Sublinear time algorithms understand parameters and properties of input data after viewing only a minuscule fraction of it. Tools from number theory, combinatorics, linear algebra, optimization theory, distributed algorithms, statistics, and probability are covered. Topics include: testing and estimating properties of distributions, functions, graphs, strings, point sets, and various combinatorial objects.
R. Rubinfeld
No textbook information available

6.5250[J] Distributed Algorithms
______

Not offered academic year 2025-2026Graduate (Spring)
(Same subject as 18.437[J])
Prereq: 6.1220
Units: 3-0-9
______
Design and analysis of algorithms, emphasizing those suitable for use in distributed networks. Covers various topics including distributed graph algorithms, locality constraints, bandwidth limitations and communication complexity, process synchronization, allocation of computational resources, fault tolerance, and asynchrony. No background in distributed systems required.
Staff

6.5310 Geometric Folding Algorithms: Linkages, Origami, Polyhedra
______

Not offered academic year 2025-2026Graduate (Fall)
Prereq: 6.1220 or permission of instructor
Units: 3-0-9
Add to schedule TBA.
______
Covers discrete geometry and algorithms underlying the reconfiguration of foldable structures, with applications to robotics, manufacturing, and biology. Linkages made from one-dimensional rods connected by hinges: constructing polynomial curves, characterizing rigidity, characterizing unfoldable versus locked, protein folding. Folding two-dimensional paper (origami): characterizing flat foldability, algorithmic origami design, one-cut magic trick. Unfolding and folding three-dimensional polyhedra: edge unfolding, vertex unfolding, gluings, Alexandrov's Theorem, hinged dissections.
E. D. Demaine
No textbook information available

6.5320 Geometric Computing
______

Not offered academic year 2024-2025Graduate (Spring)
Prereq: 6.1220
Units: 3-0-9
______
Introduction to the design and analysis of algorithms for geometric problems, in low- and high-dimensional spaces. Algorithms: convex hulls, polygon triangulation, Delaunay triangulation, motion planning, pattern matching. Geometric data structures: point location, Voronoi diagrams, Binary Space Partitions. Geometric problems in higher dimensions: linear programming, closest pair problems. High-dimensional nearest neighbor search and low-distortion embeddings between metric spaces. Geometric algorithms for massive data sets: external memory and streaming algorithms. Geometric optimization.
Staff

6.5340 Topics in Algorithmic Game Theory
______

Graduate (Spring)
Prereq: 6.1210 or 6.1220
Units: 3-0-9
______
Presents research topics at the interface of computer science and game theory, with an emphasis on algorithms and computational complexity. Explores the types of game-theoretic tools that are applicable to computer systems, the loss in system performance due to the conflicts of interest of users and administrators, and the design of systems whose performance is robust with respect to conflicts of interest inside the system. Algorithmic focus is on algorithms for equilibria, the complexity of equilibria and fixed points, algorithmic tools in mechanism design, learning in games, and the price of anarchy.
Staff

6.5350 Matrix Multiplication and Graph Algorithms
______

Not offered academic year 2025-2026Graduate (Fall)
Prereq: 6.1220
Units: 3-0-9
Add to schedule TBA.
______
Explores topics around matrix multiplication (MM) and its use in the design of graph algorithms. Focuses on problems such as transitive closure, shortest paths, graph matching, and other classical graph problems. Explores fast approximation algorithms when MM techniques are too expensive.
Staff
No textbook information available

6.5400[J] Theory of Computation
______

Graduate (Fall)
(Same subject as 18.4041[J])
(Subject meets with 18.404)
Prereq: 6.1200 or 18.200
Units: 4-0-8
Add to schedule Lecture: TR2.30-4 (54-100) Recitation: F10 (4-159) or F11 (4-159) or F12 (4-257) or F1 (4-257) or F2 (4-145) or F3 (4-145) +final
______
A more extensive and theoretical treatment of the material in 6.1400J/18.400J, emphasizing computability and computational complexity theory. Regular and context-free languages. Decidable and undecidable problems, reducibility, recursive function theory. Time and space measures on computation, completeness, hierarchy theorems, inherently complex problems, oracles, probabilistic computation, and interactive proof systems. Students in Course 18 must register for the undergraduate version, 18.404.
M. Sipser
Textbooks (Fall 2024)

6.5410[J] Advanced Complexity Theory
______

Graduate (Spring)
(Same subject as 18.405[J])
Prereq: 18.404
Units: 3-0-9
______
Current research topics in computational complexity theory. Nondeterministic, alternating, probabilistic, and parallel computation models. Boolean circuits. Complexity classes and complete sets. The polynomial-time hierarchy. Interactive proof systems. Relativization. Definitions of randomness. Pseudo-randomness and derandomizations. Interactive proof systems and probabilistically checkable proofs.
Staff

6.5420 Randomness and Computation
______

Not offered academic year 2025-2026Graduate (Spring)
Prereq: 6.1220 and 18.4041
Units: 3-0-9
______
The power and sources of randomness in computation. Connections and applications to computational complexity, computational learning theory, cryptography and combinatorics. Topics include: probabilistic proofs, uniform generation and approximate counting, Fourier analysis of Boolean functions, computational learning theory, expander graphs, pseudorandom generators, derandomization.
R. Rubinfeld

6.5430 Quantum Complexity Theory
______

Graduate (Spring)
Prereq: 6.1400, 18.4041, and 18.435
Units: 3-0-9
______
Introduction to quantum computational complexity theory, the study of the fundamental capabilities and limitations of quantum computers. Topics include complexity classes, lower bounds, communication complexity, proofs and advice, and interactive proof systems in the quantum world; classical simulation of quantum circuits. The objective is to bring students to the research frontier.
Staff

Security & Cryptography

6.1600 Foundations of Computer Security
______

Undergrad (Fall)
Prereq: (6.1210 and (6.1800 or 6.1810)) or permission of instructor
Units: 4-0-8
Add to schedule Lecture: MW11-12.30 (4-237) Recitation: F11 (2-105) +final
______
Fundamental notions and big ideas for achieving security in computer systems. Topics include cryptographic foundations (pseudorandomness, collision-resistant hash functions, authentication codes, signatures, authenticated encryption, public-key encryption), systems ideas (isolation, non-interference, authentication, access control, delegation, trust), and implementation techniques (privilege separation, fuzzing, symbolic execution, runtime defenses, side-channel attacks). Case studies of how these ideas are realized in deployed systems. Lab assignments apply ideas from lectures to learn how to build secure systems and how they can be attacked.
S. Devadas
No textbook information available

6.5610 Applied Cryptography and Security
______

Graduate (Spring)
Prereq: 6.1200 and 6.1800
Units: 4-0-8
______
Emphasis on applied cryptography. May include: basic notion of systems security, cryptographic hash functions, symmetric cryptography (one-time pad, block ciphers, stream ciphers, message authentication codes), hash functions, key-exchange, public-key cryptography (encryption, digital signatures), elliptic curve cryptography,  secret-sharing, fully homomorphic encryption, zero-knowledge proofs, and electronic voting. Assignments include a final group project. Topics may vary year to year.
Staff

6.5620[J] Foundations of Cryptography
______

Not offered academic year 2024-2025Graduate (Fall)
(Same subject as 18.425[J])
Prereq: 6.1220, 6.1400, or 18.4041
Units: 3-0-9
URL: https://mit6875.github.io/
______
A rigorous introduction to modern cryptography. Emphasis on the fundamental cryptographic primitives such as public-key encryption, digital signatures, and pseudo-random number generation, as well as advanced cryptographic primitives such as zero-knowledge proofs, homomorphic encryption, and secure multiparty computation.
Staff

6.5630 Advanced Topics in Cryptography
______

Graduate (Fall) Can be repeated for credit
Prereq: 6.5620
Units: 3-0-9
Add to schedule Lecture: M1-4 (34-301)
______
In-depth exploration of recent results in cryptography.
V. Vaikuntanathan
No textbook information available

6.5660 Computer Systems Security
______

Graduate (Spring)
Prereq: 6.1020 and 6.1800
Units: 3-6-3
______
Design and implementation of secure computer systems. Lectures cover attacks that compromise security as well as techniques for achieving security, based on recent research papers. Topics include operating system security, privilege separation, capabilities, language-based security, cryptographic network protocols, trusted hardware, and security in web applications and mobile phones. Labs involve implementing and compromising a web application that sandboxes arbitrary code, and a group final project.
Staff

Computer Systems

6.1800 Computer Systems Engineering
______

Undergrad (Spring)
Prereq: 6.1910
Units: 5-1-6
______
Topics on the engineering of computer software and hardware systems: techniques for controlling complexity; strong modularity using client-server design, operating systems; performance, networks; naming; security and privacy; fault-tolerant systems, atomicity and coordination of concurrent activities, and recovery; impact of computer systems on society. Case studies of working systems and readings from the current literature provide comparisons and contrasts. Includes a single, semester-long design project. Students engage in extensive written communication exercises. Enrollment may be limited.
K. LaCurts

6.1810 Operating System Engineering
______

Undergrad (Fall)
Prereq: 6.1910
Units: 3-0-9
Add to schedule Lecture: MW1-2.30 (34-101)
______
Design and implementation of operating systems, and their use as a foundation for systems programming. Topics include virtual memory, file systems, threads, context switches, kernels, interrupts, system calls, interprocess communication, coordination, and interaction between software and hardware. A multi-processor operating system for RISC-V, xv6, is used to illustrate these topics. Individual laboratory assignments involve extending the xv6 operating system, for example to support sophisticated virtual memory features and networking.
M. Kaashoek
No textbook information available

6.1820[J] Mobile and Sensor Computing
______

Undergrad (Spring)
Not offered regularly; consult department
(Same subject as MAS.453[J])
Prereq: 6.1800 or permission of instructor
Units: 3-0-9
______
Focuses on "Internet of Things" (IoT) systems and technologies, sensing, computing, and communication. Explores fundamental design and implementation issues in the engineering of mobile and sensor computing systems. Topics include battery-free sensors, seeing through wall, robotic sensors, vital sign sensors (breathing, heartbeats, emotions), sensing in cars and autonomous vehicles, subsea IoT, sensor security, positioning technologies (including GPS and indoor WiFi), inertial sensing (accelerometers, gyroscopes, inertial measurement units, dead-reckoning), embedded and distributed system architectures, sensing with radio signals, sensing with microphones and cameras, wireless sensor networks, embedded and distributed system architectures, mobile libraries and APIs to sensors, and application case studies. Includes readings from research literature, as well as laboratory assignments and a significant term project.
Staff

6.1850 Computer Systems and Society
______

Undergrad (Fall)
Prereq: 6.1800
Units: 3-0-9
Add to schedule Lecture: TR11-12.30 (34-301)
______
Explores the impact of computer systems on individual humans, society, and the environment. Examines large- and small-scale power structures that stem from low-level technical design decisions, the consequences of those structures on society, and how they can limit or provide access to certain technologies. Students learn to assess design decisions within an ethical framework and consider the impact of their decisions on non-users. Case studies of working systems and readings from the current literature provide comparisons and contrasts. Possible topics include the implications of hierarchical designs (e.g., DNS) for scale; how layered models influence what parts of a network have the power to take certain actions; and the environmental impact of proof-of-work-based systems such as Bitcoin. Enrollment may be limited.
K. Lacurts
No required or recommended textbooks

6.5810 Operating System Engineering
______

Not offered academic year 2024-2025Graduate (Fall)
Prereq: 6.1020 and (6.1800 or 6.1810)
Units: 3-6-3
______
Fundamental design and implementation issues in the engineering of operating systems. Lectures based on the study of a symmetric multiprocessor version of UNIX version 6 and research papers. Topics include virtual memory; file system; threads; context switches; kernels; interrupts; system calls; interprocess communication; coordination, and interaction between software and hardware. Individual laboratory assignments accumulate in the construction of a minimal operating system (for an x86-based personal computer) that implements the basic operating system abstractions and a shell. Knowledge of programming in the C language is a prerequisite.
Staff

6.5820 Computer Networks
______

Graduate (Fall)
Prereq: 6.1800 or permission of instructor
Units: 4-0-8
Add to schedule Lecture: TR1-2.30 (32-124)
______
Topics on the engineering and analysis of network protocols and architecture, including architectural principles for designing heterogeneous networks; transport protocols; Internet routing; router design; congestion control and network resource management; wireless networks; network security; naming; overlay and peer-to-peer networks. Readings from original research papers. Semester-long project and paper.
M. Ghobadi
No textbook information available

6.5830 Database Systems
______

Graduate (Fall)
(Subject meets with 6.5831)
Prereq: ((6.1210 or 6.1220) and (6.1800 or 6.1810)) or permission of instructor
Units: 3-0-9
Add to schedule Lecture: MW2.30-4 (45-230)
______
Topics related to the engineering and design of database systems, including data models; database and schema design; schema normalization and integrity constraints; query processing; query optimization and cost estimation; transactions; recovery; concurrency control; isolation and consistency; distributed, parallel and heterogeneous databases; adaptive databases; trigger systems; pub-sub systems; semi structured data and XML querying. Lecture and readings from original research papers. Semester-long project and paper. Students taking graduate version complete different assignments. Enrollment may be limited.
S. R. Madden
No textbook information available

6.5831 Database Systems
______

Undergrad (Fall)
(Subject meets with 6.5830)
Prereq: ((6.1210 or 6.1220) and (6.1800 or 6.1810)) or permission of instructor
Units: 3-0-9
Add to schedule Lecture: MW2.30-4 (45-230)
______
Topics related to the engineering and design of database systems, including data models; database and schema design; schema normalization and integrity constraints; query processing; query optimization and cost estimation; transactions; recovery; concurrency control; isolation and consistency; distributed, parallel and heterogeneous databases; adaptive databases; trigger systems; pub-sub systems; semi structured data and XML querying. Lecture and readings from original research papers. Semester-long project and paper. Students taking graduate version complete different assignments. Enrollment may be limited.
S. R. Madden
No textbook information available

6.5840 Distributed Computer Systems Engineering
______

Graduate (Spring)
Prereq: 6.1800 and permission of instructor
Units: 3-0-9
______
Abstractions and implementation techniques for engineering distributed systems: remote procedure call, threads and locking, client/server, peer-to-peer, consistency, fault tolerance, and security. Readings from current literature. Individual laboratory assignments culminate in the construction of a fault-tolerant and scalable network file system. Programming experience with C/C++ required. Enrollment limited.
Staff

6.5850 Principles of Computer Systems
______

Graduate (Fall)
Not offered regularly; consult department
Prereq: Permission of instructor
Units: 3-0-9
______
Introduction to the basic principles of computer systems with emphasis on the use of rigorous techniques as an aid to understanding and building modern computing systems. Particular attention paid to concurrent and distributed systems. Topics include: specification and verification, concurrent algorithms, synchronization, naming, Networking, replication techniques (including distributed cache management), and principles and algorithms for achieving reliability.
M. F. Kaashoek, B. Lampson, N. B. Zeldovich

Computer Architecture

6.1903 Introduction to Low-level Programming in C and Assembly
______

Undergrad (Spring); first half of term
Prereq: 6.100A
Units: 2-2-2
Credit cannot also be received for 6.1904
______
Introduction to C and assembly language for students coming from a Python background (6.100A). Studies the C language, focusing on memory and associated topics including pointers, how different data structures are stored in memory, the stack, and the heap in order to build a strong understanding of the constraints involved in manipulating complex data structures in modern computational systems. Studies assembly language to facilitate a firm understanding of how high-level languages are translated to machine-level instructions.
J. D. Steinmeyer, S. Z. Hanono Wachman

6.1904 Introduction to Low-level Programming in C and Assembly
______

Undergrad (Spring); second half of term
Prereq: 6.100A
Units: 2-2-2
Credit cannot also be received for 6.1903
______
Introduction to C and assembly language for students coming from a Python background (6.100A). Studies the C language, focusing on memory and associated topics including pointers, how different data structures are stored in memory, the stack, and the heap in order to build a strong understanding of the constraints involved in manipulating complex data structures in modern computational systems. Studies assembly language to facilitate a firm understanding of how high-level languages are translated to machine-level instructions.
J. D. Steinmeyer, S. Z. Hanono Wachman

6.1910 Computation Structures
______

Undergrad (Fall, Spring) Rest Elec in Sci & Tech
Prereq: Physics II (GIR), 6.100A, and (Coreq: 6.1903 or 6.1904); or permission of instructor
Units: 4-0-8
Add to schedule Lecture: TR1 (32-123) Recitation: WF10 (34-301) or WF2 (34-303) or WF3 (34-302, 34-303) or WF10 (34-302) or WF11 (34-301, 34-302) or WF12 (34-302, 34-303) or WF1 (34-302, 34-303) or WF2 (34-302)
______
Provides an introduction to the design of digital systems and computer architecture. Emphasizes expressing all hardware designs in a high-level hardware description language and synthesizing the designs. Topics include combinational and sequential circuits, instruction set abstraction for programmable hardware, single-cycle and pipelined processor implementations, multi-level memory hierarchies, virtual memory, exceptions and I/O, and parallel systems.
S. Hanono Wachman
No textbook information available

6.1920 Constructive Computer Architecture
______

Undergrad (Spring)
Prereq: 6.1910
Units: 3-8-1
______
Illustrates a constructive (as opposed to a descriptive) approach to computer architecture. Topics include combinational and pipelined arithmetic-logic units (ALU), in-order pipelined microarchitectures, branch prediction, blocking and unblocking caches, interrupts, virtual memory support, cache coherence and multicore architectures. Labs in a modern Hardware Design Language (HDL) illustrate various aspects of microprocessor design, culminating in a term project in which students present a multicore design running on an FPGA board.
Staff

6.5900 Computer System Architecture
______

Graduate (Fall)
Prereq: 6.1910
Units: 4-0-8
Add to schedule Lecture: MW1-2.30 (32-141) Recitation: F1-2.30 (32-141)
______
Introduction to the principles underlying modern computer architecture. Emphasizes the relationship among technology, hardware organization, and programming systems in the evolution of computer architecture. Topics include pipelined, out-of-order, and speculative execution; caches, virtual memory and exception handling, superscalar, very long instruction word (VLIW), vector, and multithreaded processors; on-chip networks, memory models, synchronization, and cache coherence protocols for multiprocessors.
D. Sanchez Martin
No textbook information available

6.5910 Complex Digital Systems Design
______

Graduate (Spring)
Not offered regularly; consult department
Prereq: 6.1910
Units: 5-5-2
______
Introduction to the design and implementation of large-scale digital systems using hardware description languages and high-level synthesis tools in conjunction with standard commercial electronic design automation (EDA) tools. Emphasizes modular and robust designs, reusable modules, correctness by construction, architectural exploration, meeting area and timing constraints, and developing functional field-programmable gate array (FPGA) prototypes. Extensive use of CAD tools in weekly labs serve as preparation for a multi-person design project on multi-million gate FPGAs. Enrollment may be limited.
Staff

6.5920 Parallel Computing
______

Graduate (Spring)
Not offered regularly; consult department
Prereq: 6.1910 or permission of instructor
Units: 3-0-9
______
Introduction to parallel and multicore computer architecture and programming. Topics include the design and implementation of multicore processors; networking, video, continuum, particle and graph applications for multicores; communication and synchronization algorithms and mechanisms; locality in parallel computations; computational models, including shared memory, streams, message passing, and data parallel; multicore mechanisms for synchronization, cache coherence, and multithreading. Performance evaluation of multicores; compilation and runtime systems for parallel computing. Substantial project required.
Staff

6.5930 Hardware Architecture for Deep Learning
______

Graduate (Spring)
(Subject meets with 6.5931)
Prereq: 6.1910 and (6.3000 or 6.3900)
Units: 3-3-6
______
Introduction to the design and implementation of hardware architectures for efficient processing of deep learning algorithms and tensor algebra in AI systems. Topics include basics of deep learning, optimization principles for programmable platforms, design principles of accelerator architectures, co-optimization of algorithms and hardware (including sparsity) and use of advanced technologies (including memristors and optical computing). Includes labs involving modeling and analysis of hardware architectures, architecting deep learning inference systems, and an open-ended design project. Students taking graduate version complete additional assignments.
V. Sze, J. Emer

6.5931 Hardware Architecture for Deep Learning
______

Undergrad (Spring)
(Subject meets with 6.5930)
Prereq: 6.1910 and (6.3000 or 6.3900)
Units: 3-3-6
______
Introduction to the design and implementation of hardware architectures for efficient processing of deep learning algorithms and tensor algebra in AI systems. Topics include basics of deep learning, optimization principles for programmable platforms, design principles of accelerator architectures, co-optimization of algorithms and hardware (including sparsity) and use of advanced technologies (including memristors and optical computing). Includes labs involving modeling and analysis of hardware architectures, architecting deep learning inference systems, and an open-ended design project. Students taking graduate version complete additional assignments.
V. Sze, J. Emer

6.5940 TinyML and Efficient Deep Learning Computing
______

Graduate (Fall)
Prereq: 6.1910 and 6.3900
Units: 3-0-9
Add to schedule Lecture: TR3.30-5 (2-190)
______
Introduces efficient deep learning computing techniques that enable powerful deep learning applications on resource-constrained devices. Topics include model compression, pruning, quantization, neural architecture search, distributed training, data/model parallellism, gradient compression, on-device fine-tuning. It also introduces application-specific acceleration techniques for video recognition, point cloud, and generative AI (diffusion model, LLM). Students will get hands-on experience accelerating deep learning applications with an open-ended design project.
S. Han
No textbook information available

6.5950 Secure Hardware Design
______

Graduate (Spring)
(Subject meets with 6.5951)
Prereq: 6.1910
Units: 3-0-9
______
Introduction to basic concepts, principles, and implementation issues in the designing of secure hardware systems. Through a mixture of lectures and paper discussions, covers state-of-the-art security attacks and defenses targeting the computer architecture, digital circuits, and physics layers of computer systems. Emphasizes both the conceptual and the practical aspects of security issues in modern hardware systems. Topics include microarchitectural timing side channels, speculative execution attacks, RowHammer, Trusted Execution Environment, physical attacks, hardware support for software security, and verification of digital systems. Students taking graduate version complete additional assignments.
Staff

6.5951 Secure Hardware Design
______

Undergrad (Spring)
(Subject meets with 6.5950)
Prereq: 6.1910
Units: 3-0-9
______
Introduction to basic concepts, principles, and implementation issues in the designing of secure hardware systems. Through a mixture of lectures and paper discussions, covers state-of-the-art security attacks and defenses targeting the computer architecture, digital circuits, and physics layers of computer systems. Emphasizes both the conceptual and the practical aspects of security issues in modern hardware systems. Topics include microarchitectural timing side channels, speculative execution attacks, RowHammer, Trusted Execution Environment, physical attacks, hardware support for software security, and verification of digital systems. Students taking graduate version complete additional assignments.
Staff


left arrow | 6.10/6.50 | 6.20/6.60 | 6.30/6.70 | 6.40/6.80 | 6.90/6.ZZ | right arrow



Produced: 25-APR-2024 05:10 PM