Computer Science, Additional Major

Additional Major in Computer Science

Overview

Students interested in pursuing an additional major in Computer Science should first consult with the Program Coordinator in the CS Undergraduate Office. Students are expected to complete the requirements for the CS minor first before continuing to the additional major. Completion of the CS additional major requires 12 computer science courses (not including 15-110 and 15-112 if needed),  5 mathematics courses, and 1 technical communication course. 

Declaration for the additional major is allowed only after all math requirements are completed or in progress, and at least 9 of the 12 CS requirements (core and electives) are completed or in progress with an average QPA of 3.0 or higher. Due to high demand, seats in upper-level CS courses are not guaranteed for additional majors; students should plan to be flexible when selecting constrained and general electives. Acceptance to complete a Computer Science additional major is not guaranteed and depends on student performance and seat availability.

Curriculum

The following courses are required for the Additional Major in Computer Science:

Computer Science requirements (12 courses):

Core courses (all are required): Units
15-122Principles of Imperative Computation12
15-150Principles of Functional Programming12
15-210Parallel and Sequential Data Structures and Algorithms12
15-213Introduction to Computer Systems12
15-251Great Ideas in Theoretical Computer Science12
15-451Algorithm Design and Analysis12
One Artificial Intelligence elective (minimum 9 units). Students will be able to tackle complex, real-world problems using techniques from Artificial Intelligence, including symbolic and probabilistic reasoning, machine learning, optimization, and perception. Units
07-280Artificial Intelligence and Machine Learning I12
10-301Introduction to Machine Learning12
11-411Natural Language Processing12
11-485Introduction to Deep Learning12
15-382Collective Intelligence
(Note: 15-382 is ONLY offered at Carnegie Mellon in Qatar.)
9
15-386Neural Computation9
16-280Intelligent Robot Systems12
16-384Robot Kinematics and Dynamics12
16-385Computer Vision12
One Domains elective (minimum 9 units). Students will gain expertise in fundamental principles from a larger domain of computer science not already represented by other constrained categories, currently logic and languages, systems, and artificial intelligence (which includes machine learning, language technologies, and robotics). Students will be able to apply theoretical and computational techniques from the Computer Science core to an introductory study of another major subarea of Computer Science. Units
02-251Great Ideas in Computational Biology
or 02-180 & 02-181
12
05-391Designing Human Centered Software
or 05-180 & 05-431
12
11-324Human Language for Artificial Intelligence12
15-322Introduction to Computer Music9
15-330Introduction to Computer Security12
15-362Computer Graphics12
15-455Undergraduate Complexity Theory9
17-313Foundations of Software Engineering12
One Logic & Languages elective (minimum 9 units). Students will master techniques for rigorous, formal reasoning about programs or systems, rooted in their logical foundations. Units
15-311Logic and Mechanized Reasoning9
15-312Foundations of Programming Languages12
15-316Software Foundations of Security and Privacy9
15-317Constructive Logic9
15-414Bug Catching: Automated Program Verification9
17-355Program Analysis12
17-363Programming Language Pragmatics12
80-413Category Theory9
One Systems elective (minimum 12 units). Students will 1. be able to describe how the properties of modern hardware (e.g., processor architecture, networks, storage) influence the design and implementation of software systems, such as through reasoning about concurrency and performance. 2. be able to analyze failures and / or resource limitations of physical systems and plan for their mitigation or management. 3. be able to develop abstractions based on lower-level primitives to manage the failures or other difficulties inherent in working with hardware. 4. demonstrate their learning through significant project / system implementations, requiring both course-specific knowledge as well as general system-building skills (i.e., not just programming, but also design, debugging, testing, etc.). The programming tasks together constitute a significant fraction of the course grade (e.g., 40% or more). Units
15-410Operating System Design and Implementation15
15-411Compiler Design15
15-418Parallel Computer Architecture and Programming12
15-440Distributed Systems12
15-441Networking and the Internet12
15-445Database Systems12
Two School of Computer Science electives (minimum 18 units):
These electives can be from any SCS department (Computer Science [15-xxx], Computational Biology [02-xxx], Human-Computer Interaction [05-xxx], SCS Interdisciplinary [07-xxx], Machine Learning [10-xxx], Language Technologies [11-xxx], Robotics [16-xxx], or Software & Societal Systems [17-xxx]). They must be 200-level or above and at least 9 units each, with the following exceptions:18
ADDITION: 15-195 and 15-295 can be combined to count as one SCS elective.
DELETIONS: 1) the following courses do NOT count as SCS electives: 02-201, 02-223, 02-250, 02-261, 05-200, 07-300, 07-402, 10-202, 11-423, 15-351, 16-211, 16-223, 16-224, 16-375, 16-376, 16-377, 16-397, 16-480, 16-730, 17-200, 17-333, 17-416, 17-562; 2) some IDeATe courses and some SCS undergraduate and graduate courses might not be allowed based on course content. Always consult with a CS undergraduate advisor before registration to determine eligibility for this requirement.

Math requirements (minimum 5 courses):

Units
All of the following courses:
21-120Differential and Integral Calculus10
21-122Integration and Approximation10
21-127Concepts of Mathematics12
or 21-128 Mathematical Concepts and Proofs
21-241Matrices and Linear Transformations11
or 21-242 Matrix Theory
21-259Calculus in Three Dimensions10
or 21-266 Vector Calculus using Matrix Algebra
or 21-268 Multidimensional Calculus
or 21-269 Vector Analysis
Plus one of the following:
15-259Probability and Computing12
21-325Probability9
21-425Probability and Martingales9
36-218Probability Theory for Computer Scientists9
36-226Introduction to Statistical Inference
(for students already taking 36-219 or 36-225)
9

Technical Communication requirement (1 course)

Learning Objectives:

  • Audience: Students will be able to analyze the audience or audiences of a work: who the stakeholders are, what those stakeholders are trying to accomplish, and how persuasive communication can help students achieve their goals.
  • Written Mechanics: Students will practice developing their professional writing voice, paying attention to spelling, grammar, style, and the use of visual information.  
  • Adaptation: Students will be able to adapt expert-level information for a general audience, across textual, graphical, and oral presentation.
  • Genres/Templates: Students will practice developing information in a variety of communication contexts, connecting areas of content in their own voice, and leading the reader through a cogent sequence of ideas while working within the constraints of a particular genre or template.
  • Peer Review: Students will practice reading and revising the work of themselves and their peers.
  • Oral Presentation Mechanics: Students will prepare for the real-time act of presenting to an audience, including delivery, practice, venue setup, and managing presentation support (slides, props, etc.).
  • Oral Presentation Development: Students will explore formal and informal modes of communication, selecting, organizing and explaining information for a real-time audience, and increasing clarity with use of structure and style.
  • Group Work: Students will practice skills to help them work as a team, stay on track, and produce a group deliverable.
One Technical Communications course: Units
07-300Research and Innovation in Computer Science9
17-200Ethics and Policy Issues in Computing9
76-270Writing for the Professions9

Double-Counting Restriction

Students pursuing an Additional Major in Computer Science must complete all requirements listed above. In addition, at most 5 of the 12 computer science requirements can be double counted toward all other declared majors and minors. The mathematics and technical communication requirements can be double counted without restriction. Students, especially from interdisciplinary majors or with multiple majors or minors, are urged to consult with the Computer Science Program Director or the Undergraduate Program Coordinator in the CS Undergraduate Office to determine double-counting restrictions specific to their own situations.

Back to top