Course 18C Mathematics with Computer Science

Mathematics and computer science are closely related fields. Problems in computer science are often formalized and solved with mathematical methods. It is likely that many important problems currently facing computer scientists will be solved by researchers skilled in algebra, analysis, combinatorics, logic and/or probability theory, as well as computer science.

The purpose of this program is to allow students to study a combination of these mathematical areas and potential application areas in computer science. Required subjects include linear algebra (18.06, 18.700 or 18.701) because it is so broadly used; discrete mathematics (18.062J or 18.310) to give experience with proofs and the necessary tools for analyzing algorithms; and software construction (6.005 or 6.033 or 6.170) where mathematical issues may arise. The required subjects covering complexity (18.404J or 18.400J) and algorithms (18.410J) provide an introduction to the most theoretical aspects of computer science.

Some flexibility is allowed in this program. In particular, students may substitute the more advanced subject 18.701 Algebra I for 18.06, and if they already have strong theorem-proving skills, may substitute 18.314 for 18.062 or 18.310. Students who have taken 6.001 before the course 6 curriculum change may use it instead of 6.01, and similarly students who have taken 6.170 may use it instead of 6.005 or 6.033. Students who have taken 18.410J before the curriculum change should not take 6.006, but must replace it with another Course 6 subject of at least 12 units.

Required Subjects

  • 18.03 or 18.034 (Differential Equations)
  • 18.06, 18.700 or 18.701 (Linear Algebra)
  • 18.410J (Design and Analysis of Algorithms)
  • 6.01 (Introduction to EECS I)
  • 6.006 (Introduction to Algorithms)

One Subject from Each of the Following Pairs

  • 18.062J (Mathematics for Computer Science)
    or 18.310 (Principles of Applied Mathematics)
  • 18.400J (Automata, Computability, and Complexity)
    or 18.404J (Theory of Computation)
  • 6.005 (Principles of Software Development)
    or 6.033 (Computer System Engineering)

Restricted Electives

Four additional 12-unit subjects from Course 18 and one additional subject of at least 12 units from Course 6. The Course 6 subject may be 6.02, 6.041, 6.17x, a Foundation or Header subject, or, with permission of the Mathematics Department, an advanced Course 6 subject. The overall program must consist of subjects of essentially different content and must include at least five Course 18 subjects with first decimal digit one or higher.