CMU's Bachelor of Science in Computer Science requires taking a minimum of 360 units (around 40 courses) organized as follows:
  • CS courses:
    ○ CS core: a series of foundational courses that teach the basics of Computer Science ○ CS constrained electives: a choice of 1 out of several courses in each of a number of advanced areas of Computer Science ○ CS free electives: any 2 courses offered in the School of Computer Science
  • General Education courses:
    ○ Computing @ Carnegie Mellon: a course for students to familiarize themselves with the campus computing environment ○ Mathematics and probability: 5 math courses ○ Engineering and natural sciences: 4 engineering or science courses ○ Arts and humanities: a minimum of 63 units worth of courses
  • Minor: each graduating CS major must also fulfill the requirements of a minor in a discipline of his/her choice

Besides scheduled courses, some of these requirements can be fulfilled by means of independent studies and by completing a senior thesis. Computer Science Courses The exact sequence of required CS courses and constrained electives depends on the year you enrolled at CMU. Select the appropriate tab below. You may also want to consult your advisor.

All Computer Science Core courses:
  • 15-112 Fundamentals of Programming
  • 15-122 Principles of Imperative Computation
  • 15-129 Freshman Immigration
  • 15-150 Principles of Functional Programming
  • 15-210 Parallel and Sequential Data Structures and Algorithms
  • 15-213 Introduction to Computer Systems
  • 15-221 Technical Communication for Computer Scientists
  • 15-251 Great Theoretical Ideas in Computer Science
  • 15-451 Algorithm Design and Analysis
One Algorithms and Complexity constrained elective:
  • 15-354 Computational Discrete Mathematics
  • 15-355 Modern Computer Algebra
  • 15-453 Formal Languages and Automata
  • 21-301 Combinatorics
  • 21-484 Graph Theory
One Applications constrained elective:
  • 05-391 Designing Human-Centered Software
  • 05-431 Software Structures for User Interfaces
  • 10-601 Machine Learning
  • 11-411 Natural Language Processing
  • 15-313 Foundations of Software Engineering
  • 15-322/15-323 Intro to Computer Music
  • 15-381 Artificial Intelligence: Representation and Problem Solving
  • 15-384 Robotic Manipulation
  • 15-385 Computer Vision
  • 15-415 Database Applications
  • 15-462 Computer Graphics
One Logics and Languages constrained elective:
  • 15-312 Foundations of Programming Languages
  • 15-317 Constructive Logic
  • 15-414 Bug Catching: Automated Program Verification and Testing
  • 21-300 Basic Logic
  • 80-311 Computability and Incompleteness
One Software Systems constrained elective:
  • 15-410 Operating System Design and Implementation
  • 15-411 Compiler Design
  • 15-418 Parallel Computer Architecture and Programming
  • 15-440 Distributed Systems
  • 15-441 Computer Networks

Two free Computer Science electives (can be from any SCS department: CSD [15-xxx], Lane Center [02-xxx], HCII [05-xxx], ISR [08-xxx, 17-xxx], MLD [10-xxx], LTI [11-xxx], RI [16-xxx]) Core courses and at least one of each constrained electives are offered once a year or more frequently.

Electives are offered based on faculty availability. This means that some electives will be offered only in Pittsburgh, others only in Doha, and others yet on both campuses possibly in different semesters. Plan ahead to line up electives with your course plan. If an elective you are very interested in is not available, or is available in an inconvenient semester, talk to your advisor and explore the possibility of taking it as an independent study or maybe even in Pittsburgh. General Education Courses The requirements for general education courses are defined by the Dean of Academic Affairs. Check the list of qualifying courses for additional information.


A minor is a sequence of courses that gives broad expertise in a field of study. Graduating CS majors are required to fulfill the requirements for a minor (other than CS) in a discipline of his/her choice. Course constraints and requirements are prescribed by the department that grants the minor. When permitted by this department, courses taken in satisfaction for its minor may also count toward any category other than Computer Science. Completion of a second major (or double degree) also satisfies the minor requirement.

See minor requirements for additional information and for a list of popular minors among CS students.

Getting Credits

Scheduled Courses

A wide variety of CS courses are offered every semester. Consult the course schedule for details.

Independent Studies

An independent study course allow motivated students to learn a specialized topic or work on projects under the supervision of a faculty advisor while receiving academic credit. Independent studies are usually one semester in duration and require prior approval from the faculty member and the Dean of Academic Affairs. See SCS independent studies for additional information. If you are considering an independent study on some topic that is not covered by scheduled courses or want to work on a project of interest, find a faculty member that could act as your supervisor and discuss your ideas with him/her.

Senior Thesis

The optional senior research thesis gives interested students the opportunity to be exposed to the breadth of tasks involved in independent research, including library work, problem formulation, experimentation, and writing and speaking. Students work closely with faculty advisors to plan and carry out their projects. Projects span the entire senior year, and students receive 18 units of academic credit each semester. See SCS senior theses for additional information.

CMU's B.S. in Computer Science Page meta information: * Contents: List course requirements for the BS in Computer Science at CMU * Maintainer: program coordinator, academic affairs * Update means: manual * Update frequency: yearly