# 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.C06, 18.700 or 18.701) because it is so broadly used, and discrete mathematics (18.062J or 18.200) to give experience with proofs and the necessary tools for analyzing algorithms. 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. We also require exposure to other areas of computer science (6.1020, 6.1800, 6.3900, or 6.4100) where mathematical issues may arise.

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.211 for 18.062 or 18.200.

## Required Subjects

• 18.03 or 18.032 (formerly 18.034) (Differential Equations)
[sufficiently advanced students may substitute 18.152 or 18.303]
• 18.06, 18.C06 (formerly 18.061), 18.700 or 18.701 (Linear Algebra)
• 18.410J (Design and Analysis of Algorithms)
• 6.100A (formerly 6.0001) (Introduction to Computer Science and Programming)
• 6.1010 (formerly 6.009) (Fundamentals of Programming)
[students who entered M.I.T. before September 2016 may use 6.01 for this requirement.]
• 6.1210 (formerly 6.006) (Introduction to Algorithms)

## One Subject from Each of the Following Pairs

• 18.062J (Mathematics for Computer Science)
or 18.200 (Principles of Discrete Applied Mathematics), including 18.200A
• 18.400J (Automata, Computability, and Complexity)
or 18.404J (Theory of Computation)
• 6.1020 (formerly 6.031) (Elements of Software Construction)
or 6.1800 (formerly 6.033) (Computer Systems Engineering)
or 6.3900 (formerly 6.036) (Introduction to Machine Learning)
or 6.4100 (formerly 6.034) (Artificial Intelligence)

## Restricted Electives

Four additional 12-unit subjects from Course 18 and one additional subject of at least 12 units from Course 6. The additional Course 6 subject can be a second subject from 6.1020, 6.1800, 6.3900, 6.4100; it can also be 6.1040, 6.1600, 6.1910, 6.3800, or, with the permission of the Department of Mathematics, an advanced Course 6 subject with sufficient mathematical content. 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.