| Current SB programs: | 6-3 | 6-4 | 6-5 | 6-7 | 6-14 | 6-9![]() |
11-6![]() |
| Current MNG programs: | 6-P3 | 6-P4 | 6-P5 | 6-P7 | 6-P14 | 6-P9![]() |
|
| Older programs: | |||||||
Degree Requirements for 6-3_2025
SB in Computer Science and Engineering
Show old EECS subject numbers
-
Two programming skills subjects:
One of6.1903
6.1903 Introduction to Low-level Programming in C and Assembly,
(
)
Prereqs: 6.100A
Units: 2-2-2Introduction 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.
6.1904
6.1904 Introduction to Low-level Programming in C and Assembly
(
)
Prereqs: 6.100A
Units: 2-2-2Introduction 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.
-
One discrete math subject:
-
One 6-3 math subject:
-
Three foundation subjects:
6.10106.009 6.1010 Fundamentals of Programming
(
,
)
Prereqs: 6.1000 or (6.100A and (6.100B or 16.C20))
Units: 2-4-6Introduces 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.
6.12106.006 6.1210 Introduction to Algorithms
(
,
)
Prereqs: 6.100A and (6.1200 or (6.120A and (6.3700, 6.3800, 18.05, or 18.600)))
Units: 5-0-7Introduction 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.
6.19106.004 6.1910 Computation Structures
(
,
)
Prereqs/[Coreqs]: GIR:PHY2, 6.100A, and ([6.1903] or 6.1904); or permission of instructor
Units: 4-0-8Provides 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.
-
Three header subjects:
6.10206.031
6.1020 Software Construction
(
)
Prereqs: 6.1010
Units: 3-0-12Introduces 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.
One of6.12206.046 6.1220 Design and Analysis of Algorithms,
(
,
)
Prereqs: 6.1200 and 6.1210
Units: 4-0-8Techniques 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.
6.14006.045
6.1400 Computability and Complexity Theory
(
)
Prereqs: (6.1200 and 6.1210) or permission of instructor
Units: 4-0-8Mathematical 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.
One of -
Five elective subjects:
- At least two of your completed subjects must be on the AUS2 or grad_AUS2 list
- At least two of your completed subjects must be on the CIM2 list
- At least one of your completed subjects must be on the II or grad_II list
- You must follow these requirements if you entered MIT in Fall 2025 or later.
- Includes subjects as of Spring 2026
- Each completed subject can only be used to satisfy at most one required subject but can be used to satisfy multiple additional constraints.
-
: only offered fall term
: only offered spring term
grey: not offered this academic year. - If you choose a Math requirement as an elective, it must not have essentially similar content to the other subjects satisfying your 6-3 degree requirements.
Tracks
To satisfy a track requirement, you must complete two subjects from the same track. Tracks are associated with one or more of the three areas in the Department: AI+D, CS, or EE.
[AI+D] Application_CIM or AI+D_AUSSubject Lists
AUS2: Advanced undergraduate subject. Also see the grad_AUS2 list below. A subject provides an AUS2 experience if at least 40% of the grade is based on new advanced EECS technical material that is rigorously evaluated through examinations and/or problem sets. An AUS2 subject must be at least 12 units, and its prerequisites should include an EECS subject at least at the foundation level, but ideally header or center level. It may be dual-numbered with a graduate subject, but must have distinct requirements to ensure accessibility to the range of undergraduate students in the department.CIM2: EECS CI-M subjects
EECS: All subjects that satisfy departmental undergraduate requirements in 6-1, 6-2, 6-3, 6-4, or 6-5 excluding subjects that are 6 units or less. Also see the grad_AUS, grad_AI+D_AUS, and grad_II lists below.
II: Independent inquiry. Also see grad_II list below. A subject provides an II experience if at least 40% of the grade in a 12-unit subject depends on a single relatively open-ended project. The student should be involved in defining the project. Projects may be done singly or in groups; they may be analytical or empirical in nature. They should be supervised in the sense that at least one milestone (proposal, outline, presentation) is evaluated and the student given feedback before the final deadline.
MATH: any subject that satisfies a Math (course 18) SB requirement but does not have essentially similar content to the other subjects satisfying your SB degree requirements.
grad_AI+D_AUS: Graduate subjects that satisfy the AI+D_AUS or EECS requirements
grad_AUS2: Graduate subjects that satisfy the AUS2 or EECS requirements
grad_II: Graduate subjects that satisfy the II additional constraint or EECS requirement

(
,
)