Computational thinking is an essential skill in all engineering and scientific disciplines. The Minor in Computer Science will provide you with both depth and breadth in the field, as well as the opportunity to explore areas of their own interest. You’ll complete six subjects (totaling at least 72 units) including at least one software-intensive subject, at least one algorithms-intensive subject, and at least one advanced subject. Upon completion of the minor you’ll have the knowledge and skills needed to make effective use of computer science concepts and computing technology in your future career.
Applying for the Minor
The Minor in Computer Science is open to all undergraduates except those in courses 6-1, 6-2, 6-3, 6-4, 6-7, 6-9, 6-14, 11-6, and 18C. You normally apply online by the end of your sophomore year but no later than Add Date one full term before the term in which you expect to receive the SB degree. If you missed the deadline to apply for the Minor, email the EECS Undergraduate Office for assistance.
The application form is completed online; there’s no need to fill out a paper application, nor to make an in-person appointment to apply.
Completing the Minor
Advising for the Minor is available through our online Question and Answer Forum, where you’ll get a fast response to both your public and private questions regarding academics or administration. You can also use that forum to set up an in-person appointment with the EECS Undergraduate Office if needed.
Once you’ve completed the minor, we’ll automatically notify the Registrar assuming you haven’t withdrawn your application from our online system — no completion forms required!
Requirements
A Minor in Computer Science requires six subjects in Course 6. A minimum of four subjects taken for the Minor cannot also count toward a major or another minor. No substitutions of other courses are allowed. Note that subjects taken under the Junior-Senior P/D/F grading option cannot be used for the Minor unless they were completed before Fall 2016 (per special permission from CoC).
Required Subjects
To complete the minor, students must take at least six subjects (six-unit subjects count as half-subjects) totaling at least 72 units from the lists below, including at least one software-intensive subject, at least one algorithms-intensive subject, and at least one advanced-level subject. Software-intensive and algorithms-intensive subjects are marked below.
Introductory Level: Select up to 12 units of the following introductory-level subjects; the unit count of each subject is given in parentheses.
- 6.100A[6.0001] Introduction to Computer Science Programming in Python (6)
- 6.100B[6.0002] Introduction to Computational Thinking and Data Science (6)
- 6.100L Introduction to Computer Science and Programming (6)
- 16.C20 Introduction to Computational Science and Engineering (6)
- 6.1903/6.1904[6.0004] Introduction to Low-level Programming in C and Assembly (6)
- 6.9080[6.01] Introduction to EECS via Robotics (12)
Basic Level: Select up to 63 units of the following basic-level subjects; the unit count for each subject is given in parentheses.
- 6.1010[6.009] Fundamentals of Programming (12); Software-intensive
- 6.1200[J][6.042[J]] Mathematics for Computer Science (12)
- 6.1210[6.006] Introduction to Algorithms (12); Algorithms-intensive
- 6.1910[6.004] Computation Structures (12)
- 6.3700[6.041] Introduction to Probability (12)
- 6.3800[6.008] Introduction to Inference (12)
- 18.200 Principles of Discrete Applied Mathematics (15)
- 18.200A Principles of Discrete Applied Mathematics (12)
- 18.211 Combinatorial Analysis (12)
Advanced Level: Select at least 12 units of the following advanced-level subjects; the unit count for each subject is given in parentheses:
- 6.1020[6.031] Elements of Software Construction (15); Software-intensive
- 6.1040[6.170] Software Studio (12); Software-intensive
- 6.1060[6.172] Performance Engineering of Software Systems (18); Software-intensive
- 6.1100[6.035] Computer Language Engineering (12); Software-intensive
- 6.1120[6.818] Dynamic Computer Language Engineering (12); Software-intensive
- 6.1220[J][6.046[J]] Design and Analysis of Algorithms (12); Algorithms-intensive
- 6.1400[J][6.045[J]] Automata, Computability, and Complexity (12)
- 6.1420[6.054] Fixed Parameter and Fine-grained Complexity (12)
- 6.1600[6.053] Foundations of Computer Security (12)
- 6.1800[6.033] Computer Systems Engineering (12)
- 6.1810[6.039] Operating Systems Engineering (12)
- 6.1820[6.808] Mobile and Sensor Computing (12)
- 6.1920[6.175] Constructive Computer Architecture (12); Software-intensive
- 6.3730[J][6.419[J]] Statistics, Computation and Applications (12)
- 6.3900[6.036] Introduction to Machine Learning (12)
- 6.4200[J][6.141[J]] Robotics: Science and Systems (12); Software-intensive
- 6.4110[6.038] Representation and Inference in AI (12)
- 6.4120[J][6.804[J]] Computational Cognitive Science (12)
- 6.4140[6.803] The Human Intelligence Enterprise (12)
- 6.4210[6.800] Robotic Manipulation (15)
- 6.4300 (Offered as 6.S058 in Spring 2025) Introduction to Computer Vision (15)
- 6.4400[6.837] Computer Graphics (12)
- 6.4450[J][6.809[J], 6.185[J]] Interactive Music Systems (12); Software-intensive
- 6.4500 Designing for the Web: Languages and User Interfaces (12)
- 6.5081[6.816] Multicore Programming (12); Software-intensive
- 6.5151[6.905] Large-scale Symbolic Systems (12)
- 6.5831[6.814] Database Systems (12)
- 6.8391[6.801] Machine Vision (12)
- 6.8611[6.806] Advanced Natural Language Processing (12)
- 6.8701[6.047] Computational Biology: Genomes, Networks, Evolution (12)
- 6.8711[J]6.802[J] Computational Systems Biology: Deep Learning in the Life Sciences (12)
- 6.8731[6.815] Digital and Computational Photography (12)
- 6.C01 Modeling with Machine Learning: from Algorithms to Applications (6)
- 6.C011 Modeling with Machine Learning for Computer Science
- 18.404 Theory of Computation (12)