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-122 | Principles of Imperative Computation | 12 |
| 15-150 | Principles of Functional Programming | 12 |
| 15-210 | Parallel and Sequential Data Structures and Algorithms | 12 |
| 15-213 | Introduction to Computer Systems | 12 |
| 15-251 | Great Ideas in Theoretical Computer Science | 12 |
| 15-451 | Algorithm Design and Analysis | 12 |
| 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-280 | Artificial Intelligence and Machine Learning I | 12 |
| 10-301 | Introduction to Machine Learning | 12 |
| 11-411 | Natural Language Processing | 12 |
| 11-485 | Introduction to Deep Learning | 12 |
| 15-382 | Collective Intelligence (Note: 15-382 is ONLY offered at Carnegie Mellon in Qatar.) | 9 |
| 15-386 | Neural Computation | 9 |
| 16-280 | Intelligent Robot Systems | 12 |
| 16-384 | Robot Kinematics and Dynamics | 12 |
| 16-385 | Computer Vision | 12 |
| 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-251 | Great Ideas in Computational Biology or 02-180 & 02-181 | 12 |
| 05-391 | Designing Human Centered Software or 05-180 & 05-431 | 12 |
| 11-324 | Human Language for Artificial Intelligence | 12 |
| 15-322 | Introduction to Computer Music | 9 |
| 15-330 | Introduction to Computer Security | 12 |
| 15-362 | Computer Graphics | 12 |
| 15-455 | Undergraduate Complexity Theory | 9 |
| 17-313 | Foundations of Software Engineering | 12 |
| 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-311 | Logic and Mechanized Reasoning | 9 |
| 15-312 | Foundations of Programming Languages | 12 |
| 15-316 | Software Foundations of Security and Privacy | 9 |
| 15-317 | Constructive Logic | 9 |
| 15-414 | Bug Catching: Automated Program Verification | 9 |
| 17-355 | Program Analysis | 12 |
| 17-363 | Programming Language Pragmatics | 12 |
| 80-413 | Category Theory | 9 |
| 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-410 | Operating System Design and Implementation | 15 |
| 15-411 | Compiler Design | 15 |
| 15-418 | Parallel Computer Architecture and Programming | 12 |
| 15-440 | Distributed Systems | 12 |
| 15-441 | Networking and the Internet | 12 |
| 15-445 | Database Systems | 12 |
| 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-120 | Differential and Integral Calculus | 10 |
| 21-122 | Integration and Approximation | 10 |
| 21-127 | Concepts of Mathematics | 12 |
| or 21-128 | Mathematical Concepts and Proofs | |
| 21-241 | Matrices and Linear Transformations | 11 |
| or 21-242 | Matrix Theory | |
| 21-259 | Calculus in Three Dimensions | 10 |
| or 21-266 | Vector Calculus using Matrix Algebra | |
| or 21-268 | Multidimensional Calculus | |
| or 21-269 | Vector Analysis | |
| Plus one of the following: | ||
| 15-259 | Probability and Computing | 12 |
| 21-325 | Probability | 9 |
| 21-425 | Probability and Martingales | 9 |
| 36-218 | Probability Theory for Computer Scientists | 9 |
| 36-226 | Introduction 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-300 | Research and Innovation in Computer Science | 9 |
| 17-200 | Ethics and Policy Issues in Computing | 9 |
| 76-270 | Writing for the Professions | 9 |
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.
