Computer Science, B.S.

Bachelor of Science in Computer Science

Students in the B.S. program in Computer Science are expected to acquire the following skills upon graduation:

  • Identify, use, design, develop and analyze appropriate abstractions and algorithms to solve problems while being able to prove the algorithm’s performance and correctness across a variety of metrics (e.g., time, space, parallel vs. sequential implementation, computability).
  • Implement solutions to problems in domains such as artificial intelligence, graphics and sound, software engineering, and human-computer interaction, by applying the fundamentals of those areas to create solutions to current problems while being exposed to research developments that will enable them to adapt as the technology changes.
  • Reason about and implement programs in various programming languages and paradigms.
  • Describe, specify, and develop large-scale, open-ended software systems subject to constraints such as performance and/or resource issues.
  • Communicate technical material effectively to technical and non-technical audiences.
  • Work both individually and in teams.
  • Identify the social impact of computing and apply legal, moral and ethical standards when analyzing the impact of computing technologies.

Due to the tremendous number of ongoing research projects within the School, many students obtain part-time or summer jobs or receive independent study credit, working on research while pursuing their undergraduate degree. Students seeking a research/graduate school career may pursue an intensive course of research, culminating in the preparation of a senior research thesis.

The School of Computer Science also offers B.S. degrees in Artificial Intelligence, Computational Biology, Human-Computer Interaction, and Robotics, as well as a Bachelor's Degree in Computer Science and the Arts (jointly with the College of Fine Arts). More detail about the Artificial Intelligence, Computational Biology, Human-Computer Interaction, and Robotics majors as well as the Computer Science and the Arts program is available in separate sections of the Undergraduate Catalog. SCS offers additional majors in Artificial Intelligence, Computational Biology, Computer Science, Human-Computer Interaction, and Robotics, and minors (to non-CS majors) in Artificial Intelligence, Computational Biology, Computer Science, Human-Computer Interaction, Language Technologies, Machine Learning, Neural Computation, Robotics, Societal Computing, and Software Engineering. Information about additional majors and minors in SCS besides those in Computer Science are listed in a separate section in the Undergraduate Catalog.

Curriculum - B.S. in Computer Science

The following requirements are for students entering Fall 2026.

Computer Science

Computer Science Core (all of the following): Units
07-128First Year Seminar3
15-122Principles of Imperative Computation
(students without credit or a waiver for 15-112, Fundamentals of Programming and Computer Science, must take 15-112 before 15-122)
12
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 (min. 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.
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 (min. 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.
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 Logics/Languages elective (min. 9 units). Students will master techniques for rigorous, formal reasoning about programs or systems, rooted in their logical foundations.
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 Software Systems elective (min. 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).
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: Units
These electives can be from any SCS department (Computer Science [15-], Computational Biology [02-], Human-Computer Interaction [05-], SCS Interdisciplinary [07-], Machine Learning [10-], Language Technologies [11-], Robotics [16-], or Software & Societal Systems [17-]). They must be 200-level or above and at least 9 units each, with the following exceptions:18
ADDITIONS: 1) students who take two of the major-intro mini-courses (02-180, 05-180, 07-180, or 16-180) during their first year may combine these two mini-courses together to count as one SCS elective; 2) 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.

Mathematics

All of the following Mathematics courses:
15-151Mathematical Foundations for Computer Science
(if not offered, substitute 21-127 or 21-128)
12
21-120Differential and Integral Calculus10
21-122Integration and Approximation10
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 Probability choices:
15-259Probability and Computing12
21-325Probability9
21-425Probability and Martingales9
36-218Probability Theory for Computer Scientists9
36-225
36-226
Introduction to Probability Theory
and Introduction to Statistical Inference
(must take both courses in this sequence to satisfy requirement)
18

Technical Communication

One technical communication course, which satisfies the following 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

Science and Engineering

All candidates for the bachelor's degree in Computer Science must complete a minimum of 36 units offered by the Mellon College of Science and/or the College of Engineering (CIT). These courses offer students an opportunity to explore scientific and engineering domains that can influence their effectiveness as computer scientists upon graduation.

Requirements for this component of the degree are listed under the SCS main page under General Education Requirements.

Humanities and Arts

All candidates for the bachelor's degree in Computer Science must complete a minimum of 63 units offered by the College of Humanities & Social Sciences and/or the College of Fine Arts. Some courses from the Tepper School of Business also qualify for this requirement. These courses offer students breadth in their education and perspectives and provide students with a better appreciation of social, artistic, cultural, political and economic issues that can influence their effectiveness as computer scientists upon graduation.

Requirements for this component of the degree are listed under the SCS main page under General Education Requirements.

Required Minor or Concentration

Students completing the bachelor's degree in Computer Science must complete either a minor outside of SCS or a concentration within SCS. A minor is a sequence of (typically 5-6) courses within a particular department to give students a core of a specific discipline but not an entire major of study. Refer to the sections for other CMU colleges for details about available non-SCS minors. An SCS concentration is a sequence of (typically 4-5) courses within an SCS department to give students further depth in specific areas of research important to SCS. SCS concentrations are available only to SCS students and assume that these students have a significant core knowledge in Computer Science including 15-210, 15-213 and 15-251. See the SCS Concentrations section for a list of available concentrations and their requirements. Completion of an additional major (or dual degree) also satisfies this requirement. Students should consult with their academic advisor to plan for their desired minor or concentration starting in the sophomore year.

Double Counting

In general, courses taken in satisfaction of the minor or additional major may also count toward any general education category in the CS major (i.e. courses outside of the Computer Science and Mathematics requirements). Double counting toward Computer Science and Mathematics courses in the CS major is strictly limited and depends on the chosen minor (or additional major). In general, students may double count at most 5 of the 12 core Computer Science requirements toward all other declared additional majors and minors. Additional majors and minors have their own double counting rules as well. Consult with a CS undergraduate advisor and an advisor from the department of the minor (or additional major) for specific restrictions on double counting.

Computing @ Carnegie Mellon (1 course)

The following course is required of all students to familiarize them with the campus computing environment:

99-101Core@CMU3

Free Electives

A free elective is any Carnegie Mellon course. However, a maximum of nine (9) units of Physical Education and/or Military Science (ROTC) and/or Student-Led (StuCo) courses may be used toward fulfilling graduation requirements.

Summary of Degree Requirements:

AreaCoursesUnits
Computer Science (core courses, constrained electives, and SCS electives)12125
Mathematics658
Technical Communication19
Science/Engineering436
Humanities/Arts763
Minor or Concentration Requirement/Free electivesVaries63
Computing @ Carnegie Mellon13
First Year Seminar13
360

Sample Course Sequence

The sample given below is for a student who already has credit for introductory programming and one semester of calculus. Students with credit for two semesters of calculus may start with a more advanced math class (e.g. 21-241) in their first year. Students with no credit for introductory programming and/or one semester of calculus will take 15-112 and/or 21-120 in their first semester and shift a few courses to later semesters after consulting with their academic advisor; these students should still be able to complete their degree in four years. It is recommended that students keep their academic load lighter for their Senior Fall semester to account for offsite job interviews or for their Senior Spring semester to account for visits to graduate schools.

Freshman Year:
Fall Units
07-128First Year Seminar3
07-131Great Practical Ideas for Computer Scientists
(optional, not required for CS major)
2
15-122Principles of Imperative Computation12
15-151Mathematical Foundations for Computer Science
(if not offered, substitute 21-127)
12
21-122Integration and Approximation10
76-101Interpretation and Argument9
99-101Core@CMU3
 51
Spring Units
15-150Principles of Functional Programming12
15-213Introduction to Computer Systems12
21-259Calculus in Three Dimensions10
xx-180SCS Major Intro Mini5
xx-xxxHumanities and Arts Elective9
 48
Sophomore Year:
Fall Units
15-210Parallel and Sequential Data Structures and Algorithms12
21-241Matrices and Linear Transformations11
xx-xxxScience/Engineering Course9
xx-xxxHumanities and Arts Elective9
xx-xxxMinor Requirement / Free Elective9
 50
Spring Units
15-251Great Ideas in Theoretical Computer Science12
xx-xxxComputer Science: Domains Elective*9
xx-xxxProbability Course*9
xx-xxxScience/Engineering Course9
xx-xxxHumanities and Arts Elective9
 48
Junior Year:
Fall Units
15-451Algorithm Design and Analysis12
xx-xxxComputer Science: Logic/Languages Elective*9
xx-xxxTechnical Communications Course*9
xx-xxxScience/Engineering Course9
xx-xxxMinor Requirement / Free Elective9
 48
Spring Units
15-xxxComputer Science: Systems Elective*12
xx-xxxComputer Science: Artificial Intelligence Elective*9
xx-xxxScience/Engineering Course9
xx-xxxHumanities and Arts Elective9
xx-xxxMinor Requirement / Free Elective9
 48
Senior Year:
Fall Units
xx-xxxSchool of Computer Science Elective9
xx-xxxHumanities and Arts Elective9
xx-xxxMinor Requirement / Free Elective9
xx-xxxMinor Requirement / Free Elective9
 36
Spring Units
xx-xxxSchool of Computer Science Elective9
xx-xxxHumanities and Arts Elective9
xx-xxxMinor Requirement / Free Elective9
xx-xxxMinor Requirement / Free Elective9
 36
Minimum number of units required for the degree:360
*

The flexibility in the curriculum allows many different schedules, of which the above is only one possibility. Some elective courses are offered only once per year (Fall or Spring). Constrained electives (probability, logic/languages, software systems, artificial intelligence and domains) may be taken in any order and in any semester if prerequisites are met and seats are available. Constrained electives are shown in the specific semesters in the schedule above as an example only. Students should consult with their academic advisor to determine the best elective options depending on course availability, their academic interests and their career goals.  

Undergraduate Research Thesis

CS majors may use the SCS Honors Research Thesis as part of their degree. The SCS Honors Undergraduate Research Thesis (07-599) typically starts in the fall semester of the senior year, and spans the entire senior year. Students receive a total of 36 units of academic credit for the thesis work, 18 units per semester. Up to 18 units can be counted toward CS elective requirements (9 per semester for 2 semesters maximum).  Students interested in research may also consider using Research and Innovation in Computer Science (07-300, 9 units) as their technical communications requirement in their junior year since this course will introduce students to various research projects going on in the School of Computer Science that may lead to a senior thesis. This course leads to a subsequent Research Practicum in Computer Science (07-400, 12 units) that allows students to complete a small-scale research study or experiment and present a research poster. Students who use 15-400 to start their senior thesis can use these units toward the required 36 units.

For more information about the SCS Honors Research Thesis, refer to the SCS Honors Research Thesis section for learning objectives, application requirements and expected outcomes.

Dual Degree in Computer Science

Students wishing to pursue a Dual Degree in Computer Science are required to apply in the same way as students wishing to transfer into the Computer Science major. Details are given in the SCS Policies section. Besides the student's primary degree requirements, a student accepted for Dual Degree in CS is required to complete at least 450 units in total and meet all requirements for the CS major including all general education requirements (humanities/arts and science/engineering). Dual degree students do not need to complete 07-128, and these students will replace 15-151 with either 21-127 or 21-128. Since the CS major requires at least a minor or concentration in another area, the student's primary major will substitute for this requirement. Note that the primary major must be completed prior to or at the same time as the dual degree in CS to satisfy the minor requirement; a dual degree in CS cannot be certified if the primary degree is not completed. Students should consult with their CS academic advisor to review all requirements, once approved.

Double-Counting Restriction

Students pursuing a Dual Degree in Computer Science must complete all requirements for the CS primary major (except 07-128 which is not required and 15-151 which will be replaced with 21-127 or 21-128). In addition, at most 5 of the 12 computer science requirements can double count with all other declared majors and minors. Students, especially from interdisciplinary majors or with multiple majors or minors, are urged to consult with all of their academic advisors to determine double-counting restrictions specific to their own situations.

Back to top